如何使用 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
}
// 完成!
})
使用流
所有這些方法在將控制權返回給程式之前,都會將完整的內容寫入檔案(在異步版本中,這意味著執行回調函數)。
在這種情況下,更好的選擇是使用流來寫入檔案內容。