使用 Node.js 寫入檔案

寫入檔案

在 Node.js 中寫入檔案的最簡單方法是使用 fs.writeFile() API。

const fs = require('node:fs');

const content = 'Some content!';

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

同步寫入檔案

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

const fs = require('node: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('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 會替換檔案的內容

您可以通過指定標誌來修改默認行為

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

您可能會使用的標誌如下

標誌描述如果檔案不存在,則創建檔案
r+此標誌將檔案以讀取寫入的方式打開
w+此標誌將檔案以讀取寫入的方式打開,並將流的位置置於檔案的開頭
a此標誌將檔案以寫入的方式打開,並將流的位置置於檔案的末尾
a+此標誌將檔案以讀取寫入的方式打開,並將流的位置置於檔案的末尾

向文件追加內容

在不想用新內容覆蓋文件,而是想要追加內容時,追加到文件是很方便的。

範例

一個方便的方法是使用 fs.appendFile()(以及它的 fs.appendFileSync() 對應物)向文件末尾追加內容。

const fs = require('node:fs');

const content = 'Some content!';

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

帶有 Promises 的範例

這裡是一個使用 fsPromises.appendFile() 的範例

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();