Skip to content

使用 Node.js 写文件

写入文件

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

javascript
const fs = require('node:fs')
const content = 'Some content!'

fs.writeFile('/Users/joe/test.txt', content, err => {
  if (err) {
    console.error(err)
  } else {
    // 文件写入成功
  }
})

同步写入文件

或者,您可以使用同步版本 fs.writeFileSync

javascript
const fs = require('node:fs')
const content = 'Some content!'

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

您也可以使用 fs/promises 模块提供的基于 Promise 的 fsPromises.writeFile() 方法:

javascript
const fs = require('node: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 将替换文件的内容。

您可以通过指定标志来修改默认设置:

javascript
fs.writeFile('/Users/joe/test.txt', content, { flag: 'a+' }, err => [])

您可能会使用的标志如下:

标志描述文件不存在时是否创建
r+此标志以读写模式打开文件
w+此标志以读写模式打开文件,并将流位置设置在文件开头
a此标志以写入模式打开文件,并将流位置设置在文件末尾
a+此标志以读写模式打开文件,并将流位置设置在文件末尾

您可以在 fs 文档中找到有关标志的更多信息。

向文件追加内容

当您不想用新内容覆盖文件,而是想向其添加内容时,追加到文件非常方便。

示例

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

javascript
const fs = require('node:fs')
const content = 'Some content!'

fs.appendFile('file_log', content, err => {
  if (err) {
    console.error(err)
  } else {
    // done!
  }
})

使用 Promise 的示例

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

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

example()