如何使用 Node.js 寫入檔案

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

範例:

const fs = require('fs')

const content = '一些內容!'

fs.writeFile('/Users/flavio/test.txt', content, (err) => {
 if (err) {
 console.error(err)
 return
 }
 // 檔案已成功寫入
})

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

const fs = require('fs')

const content = '一些內容!'

try {
 const data = fs.writeFileSync('/Users/flavio/test.txt', content)
 // 檔案已成功寫入
} catch (err) {
 console.error(err)
}

預設情況下,如果該文件已存在,該 API 將替換該文件的內容

你可以通過指定標誌 (flag) 改變預設行為:

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

你可能會使用的標誌 (flags) 有:

  • r+:打開檔案進行讀取和寫入
  • w+:打開檔案進行讀取和寫入,將流定位在檔案開頭。如果檔案不存在,則創建檔案
  • a:打開檔案進行寫入,將流定位在檔案結尾。如果檔案不存在,則創建檔案
  • a+:打開檔案進行讀取和寫入,將流定位在檔案結尾。如果檔案不存在,則創建檔案

(你可以在 https://nodejs.org/api/fs.html#fs_file_system_flags 找到更多的標誌)

追加到檔案

一個方便的方法是使用 fs.appendFile()(以及其 fs.appendFileSync() 對應的同步版本)將內容追加到檔案末尾:

const content = '一些內容!'

fs.appendFile('file.log', content, (err) => {
 if (err) {
 console.error(err)
 return
 }
 // 完成!
})

使用流

所有這些方法在將控制權返回給程式之前,都會將完整的內容寫入檔案(在異步版本中,這意味著執行回調函數)。

在這種情況下,更好的選擇是使用流來寫入檔案內容。