node.js读取和写入文件

 读取文件

在 Node.js 中读取文件的最简单方法是使用 fs.readFile() 方法,将文件路径、编码和将使用文件数据(以及错误)调用的回调函数传递给它:

const fs = require('fs');

fs.readFile('/Users/joe/test.txt', 'utf8', (err, data) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(data);
});

或者,你可以使用同步版本 fs.readFileSync()

const fs = require('fs');

try {
  const data = fs.readFileSync('/Users/joe/test.txt', 'utf8');
  console.log(data);
} catch (err) {
  console.error(err);
}

你还可以使用 fs/promises 模块提供的基于 promise 的 fsPromises.readFile() 方法:

const fs = require('fs/promises');

async function example() {
  try {
    const data = await fs.readFile('/Users/joe/test.txt', { encoding: 'utf8' });
    console.log(data);
  } catch (err) {
    console.log(err);
  }
}
example();

fs.readFile()fs.readFileSync()fsPromises.readFile() 这三个都在返回数据前读取了内存中文件的全部内容。

这意味着大文件将对你的内存消耗和程序执行速度产生重大影响。

在这种情况下,更好的选择是使用流读取文件内容。


编写文件

写入文件

在 Node.js 中写入文件的最简单方法是使用 fs.writeFile() API。

const fs = require('fs');

const content = 'Some content!';

fs.writeFile('/Users/joe/test.txt', content, err => {
  if (err) {
    console.error(err);
  }
  // file written successfully
});

同步地写入文件

或者,你可以使用同步版本 fs.writeFileSync()

const fs = require('fs');

const content = 'Some content!';

try {
  fs.writeFileSync('/Users/joe/test.txt', content);
  // file written successfully
} catch (err) {
  console.error(err);
}

你还可以使用 fs/promises 模块提供的基于 promise 的 fsPromises.writeFile() 方法:

const fs = require('fs/promises');

async function example() {
  try {
    const content = 'Some content!';
    await fs.writeFile('/Users/joe/test.txt', content);
  } catch (err) {
    console.log(err);
  }
}
example();

默认情况下,如果此 API 已经存在,则该 API 将为 替换文件内容

你可以通过指定标志来修改默认值:

fs.writeFile('/Users/joe/test.txt', content, { flag: 'a+' }, err => {});
你可能会使用的标志是
标志 描述 如果文件不存在则创建文件
r+ 此标志打开 reading 和 writing 的文件
w+ 此标志为 reading 和 writing 打开文件,并将流定位在文件的 beginning
a 此标志为 writing 打开文件,并将流定位在文件的 end
a+ 此标志为 reading 和 writing 打开文件,并将流定位在文件的 end
  • 你可以在 文件系统 中找到有关标志的更多信息。

 将内容附加到文件

当你不想用新内容覆盖文件而是添加到文件时,附加到文件很方便。

示例

将内容追加到文件末尾的便捷方法是 fs.appendFile()(及其对应的 fs.appendFileSync()):

const fs = require('fs');

const content = 'Some content!';

fs.appendFile('file.log', content, err => {
  if (err) {
    console.error(err);
  }
  // done!
});
Promise 的例子

这是一个 fsPromises.appendFile() 示例:

const fs = require('fs/promises');

async function example() {
  try {
    const content = 'Some content!';
    await fs.appendFile('/Users/joe/test.txt', content);
  } catch (err) {
    console.log(err);
  }
}
example();

你可能感兴趣的:(node.js)