fs 模塊允許你通過 Stream Api 來對數(shù)據(jù)進(jìn)行讀寫操作。與 readFile 及 writeFile 方法不同的是,他對內(nèi)存的分類不是一次性的,也就是說可以分塊上傳,這對上傳一些大文件來說很方便的。
//引入fs模塊
var fs = require('fs');
//使用createReadStream來接受文件
var stream = fs.createReadStream('./cli.js');
//處理數(shù)據(jù)
stream.on('data', function(chunk) {
console.log('處理文件');
console.log(chunk);
});
//接收完成
stream.on('end', function() {
console.log('數(shù)據(jù)接收完畢');
});
運(yùn)行結(jié)果:
image.png
注:列如在寫如系統(tǒng)文件的時候也可使用 fs.WriteStream來實(shí)現(xiàn),這樣可以實(shí)現(xiàn)打開一次文件長時間寫入。
監(jiān)聽
Node 允許監(jiān)聽文件或者目錄是否發(fā)生變化,當(dāng)有文件或文件夾發(fā)生變化,會分發(fā)一個事件,然后觸發(fā)指定函數(shù)。下面我們來做一個監(jiān)聽 css 文件的監(jiān)聽。
//引入fs
var fs = require('fs');
//獲取當(dāng)前目錄所有文件
var files = fs.readdirSync(process.cwd());
files.forEach(function(fileName) {
//過濾css
if (/\.css/.test(fileName)) {
//監(jiān)聽css文件
fs.watchFile(process.cwd() + '\\' + fileName, function() {
console.log('當(dāng)前發(fā)生改變的CSS文件有:' + fileName);
})
}
});
執(zhí)行結(jié)果:
image.png
除了 fs.watchFile 之外 , 還可以使用 fs.watch 來監(jiān)聽整個目錄。