在 Node JS 中写入文件

Isaac Tony 2023年10月12日
  1. 在 NodeJS 中使用 fs.writeFile() 写入数据
  2. 在 NodeJS 中使用 fs.appendFile() 将内容写入文件
在 Node JS 中写入文件

使用文件是每个开发人员的基本技能,无论你使用哪种编程语言。在 Node js 中,对文件的处理主要是通过 fs 模块,它对文件进行各种操作。

由于 fs 模块存在于标准库中,我们可以通过简单地要求它在我们的程序中使用它。

const fs = require('fs')

fs 模块提供的默认异步方法之一是 fs.writeFile() 将任何类型的数据写入文件的方法。此方法接受四个参数,如此处所示。

在 NodeJS 中使用 fs.writeFile() 写入数据

var fs = require('fs');
fs.writeFile(filepath, data, [encoding], flag, [callback])

第一个参数用于指定我们正在写入的文件的位置。第二个参数是我们写入指定位置文件的数据。

编码参数是可选的。

但是,编码格式有 base64ASCIIutf8 等多种格式。不指定此参数时,默认编码格式为 utf8

flag 参数也是一个可选参数,它指定我们希望对目标文件执行的写入操作的种类。

默认的 flag 是 w,代表写作。我们可能使用的其他一些标志是用于读取和写入的 r+,用于将流定位在文件开头的 w+ 以及读取和写入。

最后,我们还有 callback 参数。一旦 fs.writeFile() 方法被执行,这个函数就会被调用。

如果方法失败,它还负责抛出错误。在下面的示例中,我们将一些文本写入名为 tesla.txt 的文本文件。

请注意,我们尚未创建文件 tesla.txt;但是,当使用 fs.writeFile() API 写入不存在的文件时,将自动创建该文件。

const fs = require('fs');

const text = 'Tesla is largest EV manufacturer';

fs.writeFile('tesla.txt', text, (err) => {
  if (err) return console.error(err);
  console.log('File successfully written !');
});

由于文件 tesla.txt 不存在,因此创建了代码示例。

但是,当写入存在的文件时,我们正在写入的新内容将覆盖预先存在的内容。

在下面的示例中,我们将向我们创建的 tesla.txt 文件添加新的文本内容。

const fs = require('fs');

const text = 'Lucid Motors is a top EV manufacturer !';

fs.writeFile('tesla.txt', text, (err) => {
  if (err) return console.error(err);
  console.log('File successfully written !');
});

输出:

Lucid Motors is a top EV manufacturer !

正如 test.txt 文件中所显示的,初始内容已被新内容覆盖。如果我们写一个包含一些内容的文件,我们可以指定附加标志 a

这个标志允许我们在文件末尾写一些已经有内容的内容。

const fs = require('fs');

const text = 'Tesla is a giant though!';

fs.writeFile('tesla.txt', text, {flag: 'a'}, (err) => {
  if (err) return console.error(err);
  console.log('File successfully written !');
});

输出:

Lucid Motors is a top EV manufacturer !Tesla is a giant though!

或者,我们也可以使用 fs.appendFile() 将内容写入已经包含某些内容的文件。

在 NodeJS 中使用 fs.appendFile() 将内容写入文件

const fs = require('fs');

const text = 'Tesla is a giant though!';

fs.appendFile('tesla.txt', text, (err) => {
  if (err) return console.error(err);
  console.log('File successfully written !');
});

输出:

Lucid Motors is a top EV manufacturer !Tesla is a giant though!

fs 模块 还提供了一个异步方法 fs.writeFileSync(),我们也可以使用它来写入 Node js 中的文件。如果我们正在写入的文件不存在,此方法将创建一个新文件。

当写入包含某些内容而不添加附加标志的文件时,唯一内容也将覆盖旧内容。

const fs = require('fs')
const content = 'Tesla is the largest EV manufacturer!';

try {
  fs.writeFileSync('tesla.txt', content)

} catch (err) {
  console.error(err)
}

输出:

Tesla is the largest EV manufacturer!
作者: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.

LinkedIn

相关文章 - Node.js File