跟IO有關的官方套件
fs套件
fs套件提供讀取檔案系統的一些操作方式,而官方針對操作大多實作了有帶Sync跟沒帶Sync的兩個版本,其中有Sync的function都是屬於同步的操作方式,可以直接回傳值回來,而沒有Sync的function則是會有callback,在callback中接入回傳值,同時也帶入error訊息供判斷。
fs.readdirSync function提供同步的資料夾列表,回傳值為一個file的陣列
var fs = require('fs') var files = fs.readdirSync('.'); for ( i in files ) { console.log(files[i]); }
fs.readdirSync為同步讀取目錄之方法,使用指令列接入參數的方式(process.argv)來動態帶入dir的位置
var fs = require('fs'); var dir = '.'; if ( process.argv[2] ) dir = process.argv[2]; var files = fs.readdirSync(dir); for (i in files) { console.log(files[i]); }
fs.readFileSync function提供一個同步讀取檔案的操作,回傳值為該檔案的內文
var fs = require('fs'); var fileName='/etc/hosts'; var text = fs.readFileSync(fileName, "utf8"); console.log(text);
fs.unlinkSync為刪除檔案的同步操作,對應的非同步操作為fs.unlink
var fs = require('fs'); fs.unlinkSync('/tmp/hello') console.log('successfully deleted /tmp/hello');
如果是使用沒帶Sync的function,則需要實作callback function來達到操作回傳的內容物件,範例如下:
承上讀取檔案之同步操作,fs.readFile function提供一個非同步讀取檔案的操作,callback中回傳值為該檔案的內文
var fs = require('fs'); var fileName='/etc/hosts'; fs.readFile(fileName, "utf8", function(err, data){ if(err) console.log(err); console.log(data); });
另一個好用的function是fs.stat,可以用來檢測某個路徑下的檔案狀態或是資料匣的狀態
var fs = require('fs'); var path='/etc/hosts'; //建立stat物件 var s = fs.statSync(path); //另一種建立方式:process.binding('fs').stat(path); //檢視stat物件內容 console.log(s);