node 的檔案系統
Node.js 的 fs module ,是用來操作實體檔案,可以同步或非同步存取檔案系統操作。 一般建議使用 非同步存取 檔案,性能高、速度快、無阻塞。
非同步讀取檔案
我們用
fs.readFile(fileName [,options], callback)
可以讀取檔案。
參數:
- fileName: 檔案的完整路徑及檔名,格式字串。
- options: options 可能是一個物件或字串,包含
編碼及flag。這裡預設的編碼是utf8, flag是r。 - call back: 是帶兩個參數的function,error及file data,當我們執行readFile完成時, 要做的事, 例如: 回傳file data。
讀取TestFile.txt檔案
var fs = require('fs');
fs.readFile('TestFile.txt', function (err, data) {
if (err) throw err;
console.log(data.toString());
});
如上,我們執行完讀取檔案操作,它會執行 function,如果有錯誤,會回傳錯誤;成功,會回傳所讀取的檔案資料。如圖:

同步讀取檔案
雖然,常用的是非同步讀取檔案,但,我們也可以看看,如何同步讀取檔案。
const fs = require('fs');
const data = fs.readFileSync('dummyfile.txt', 'utf8');
console.log(data);
寫入檔案
fs.writeFile() 寫入檔案,如果檔案存在,會覆寫原本檔案資料;否則會自動新增檔案並寫入資料。
我們用
fs.writeFile(filename, data[, options], callback)
可以寫入檔案。
參數: ● fileName: 檔案的完整路徑及檔名,格式字串。 ● data: 要寫入的檔案內容。 ● options: options 可能是一個物件或字串,包含"編碼"及"flag"。這裡預設的編碼是 utf8 , flag是 “w"。 ● call back: 只帶一個錯誤參數err的function,當我們執行writeFile完成時, 要做的事。例如: 寫入成功的訊息顯示;失敗時,丟出err。
新增並寫入檔案範例
const fs = require('fs');
fs.writeFile('test.txt', '您好嗎?', function (err) {
if (err)
console.log(err);
else
console.log('Write operation complete.');
});
這裡例子裡,我們新增了原本不存在的 test.txt檔案,並且寫入 “您好嗎?"。如果成功會輸出操作成功的訊息。如圖:

我們可以看到資料夾裡,新增了test.txt檔案 ,打開來看內容,確實被寫入了!
新增內容至檔案
如果,我們要新增內容至檔案(不覆蓋),該如何做呢?同樣方式,同樣的參數,我們可以用fs.appendFile()
const fs = require('fs');
fs.appendFile('test.txt', '我很好!', function (err) {
if (err)
console.log(err);
else
console.log('Append operation complete.');
});
我們執行,並且打開檔案看看,如圖:

開啟檔案
另外,我們也可以開啟檔案,進行讀/寫操作。
我們用
fs.open(path, flags[, mode], callback)
開啟檔案。
參數:
- path: 檔案的完整路徑及檔名,格式字串。
- flag: 用flag代表操作行為。可以參考下圖!
- mode: mode代表文件的權限,預設為0666代表可讀可寫。
- call back: 是帶兩個參數的function,err及file data,當我們執行open完成時, 要做的事, 例如: 打開成功的訊息顯示;失敗時,丟出err。
我們看看例子: opfile.js
const fs = require('fs');
fs.open('TestFile.txt', 'r+', function (err,fd) {
if (err) throw err;
console.log('檔案開啟成功!');
});
執行結果,如圖:

flag:
