Node.js 的 fs 模塊提供了與文件系統進行交互的功能。
無需安裝,作為 Node 核心的一部分,可以通過 require 來使用:
const fs = require('fs')
一旦這樣做了,你就可以訪問它的所有方法,包括:
fs.access()
:檢查文件是否存在,以及 Node 是否可以使用權限訪問該文件。fs.appendFile()
:將數據追加到文件中。如果文件不存在,則會創建新的文件。fs.chmod()
:更改指定文件的許可權。相關方法有:fs.lchmod()
,fs.fchmod()
fs.chown()
:更改指定文件的所有者和群組。相關方法有:fs.fchown()
,fs.lchown()
fs.close()
:關閉文件描述符fs.copyFile()
:複製文件fs.createReadStream()
:創建可讀的文件流fs.createWriteStream()
:創建可寫的文件流fs.link()
:在文件中創建一個新的硬連接fs.mkdir()
:創建一個新的文件夾fs.mkdtemp()
:創建一個臨時目錄fs.open()
:設置文件模式fs.readdir()
:讀取目錄的內容fs.readFile()
:讀取文件的內容。相關方法有:fs.read()
fs.readlink()
:讀取符號鏈接的值fs.realpath()
:將相對文件路徑指針解析為完整路徑(.
,..
)fs.rename()
:重命名文件或文件夾fs.rmdir()
:刪除文件夾fs.stat()
:返回文件的狀態。相關方法有:fs.fstat()
,fs.lstat()
fs.symlink()
:創建新的符號鏈接fs.truncate()
:將指定文件截斷到指定長度。相關方法有:fs.ftruncate()
fs.unlink()
:刪除文件或符號鏈接fs.unwatchFile()
:停止監聽文件的變化fs.utimes()
:更改文件的時間戳記。相關方法有:fs.futimes()
fs.watchFile()
:開始監聽文件的變化。相關方法有:fs.watch()
fs.writeFile()
:將數據寫入文件。相關方法有:fs.write()
關於 fs
模塊的一個特點是,所有的方法默認都是異步的,但是也可以同步地進行操作,只需在方法名後面添加 Sync
。
例如:
fs.rename()
fs.renameSync()
fs.write()
fs.writeSync()
這對應用程序的流程有很大的影響。
Node 10 包括對基於 promise 的 API 的實驗性支援。
舉個例子,讓我們來看看 fs.rename()
方法。使用回調函數來使用異步 API:
const fs = require('fs')
fs.rename('before.json', 'after.json', (err) => {
if (err) {
return console.error(err)
}
//完成
})
使用同步 API 可以像這樣,使用 try/catch 塊來處理錯誤:
const fs = require('fs')
try {
fs.renameSync('before.json', 'after.json')
//完成
} catch (err) {
console.error(err)
}
這裡的關鍵區別在於,第二個例子中的腳本執行將阻塞,直到文件操作成功為止。