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)
}

這裡的關鍵區別在於,第二個例子中的腳本執行將阻塞,直到文件操作成功為止。