fs模塊用於文件的讀寫等操做。
該模塊有以下這些方法:css
const fs = require('fs'); fs.stat('test.html',function(err,stats){ if(err){ console.log(err); }else{ console.log('文件:' + stats.isFile()); //true console.log('目錄:' + stats.isDirectory()); //false } });
接受以下幾個參數:html
fs.mkdir('css',function(err){ if(err){ console.log(err); }else{ console.log("建立成功"); } });
var str = "Hello Node.js"; fs.writeFile('write.txt', str, 'utf8', function (err) { if (err) { console.log(err); }else{ console.log("建立成功"); } });
若是該文件不存在則建立該名稱文件並寫入數據。若是屢次寫入的話,那麼後面寫入的內容會覆蓋前面寫入的內容。數據庫
用法與writeFile
相同,只是對此寫入的話不會覆蓋以前的數據,而是在其後追加數據。數組
回調函數中的data
即包含了讀取的數據。app
fs.readFile('write.txt',function(err,data){ if(err){ console.log(err); }else{ console.log(data.toString()); } });
fs.readdir('css',function(err,data){ if (err){ console.log(err); }else{ console.log(data); } });
不過這樣只能獲取第一級目錄函數
fs.rename('html/index.html','html/news.html',function(err){ if (err) { console.log(err); } else { console.log('修更名字成功'); } })
這樣就能夠把index.html
文件名修改成news.html
。ui
這個方法還能夠實現文件剪切功能:code
fs.rename('html/css/basic.css','html/style.css',function(err){ if(err){ console.log(err); return false; } console.log('剪切成功'); })
這樣就能夠把html/css/basic.css
剪切到html/style.css
。htm
fs.rmdir('text',function(err){ if(err){ console.log(err); return false; } console.log('刪除目錄成功'); })
這裏的刪除只能刪除空目錄。對象
fs.unlink('index.txt',function(err){ if(err){ console.log(err); return false; } console.log('刪除文件成功'); })
這種方式讀取文件是分塊讀取的
// 建立一個能夠讀取的流,讀取文件 input.txt 中 var readStream=fs.createReadStream('input.txt'); var str='';/*保存數據*/ var count=0; /*次數*/ //觸發data事件,開始取讀數據 readStream.on('data',function(chunk){ str+=chunk; count++; }) //觸發end事件,讀取完成 readStream.on('end',function(chunk){ console.log(count); console.log(str); }) //讀取失敗 readStream.on('error',function(err){ console.log(err); })
這種讀取方式很高效,適合取讀大批量數據。若是所讀數據量不是很大的話使用上面的readFile
方法便可。
var data = '我是從數據庫獲取的數據,我要保存到文件中去\n'; // 建立一個能夠寫入的流,寫入到文件 output.txt 中 var writerStream = fs.createWriteStream('output.txt'); //開始寫入數據 writerStream.write(data,'utf8'); //標記寫入完成 writerStream.end(); //觸發finish事件,完成寫入 writerStream.on('finish',function(){ console.log('寫入完成'); }) //失敗 writerStream.on('error',function(){ console.log('寫入失敗'); })
一樣,若是要寫入的文件不存在就建立該文件再寫入。
管道提供了一個輸出流到輸入流的機制。一般咱們用於從一個流中獲取數據並將數據傳遞到另外的一個流中。
// 建立一個可讀流,這是管道的輸出端 var readerStream = fs.createReadStream('input.txt'); // 建立一個可寫流,這是管道的輸入端 var writerStream = fs.createWriteStream('output.txt'); // 管道讀寫操做 // 讀取 input.txt 文件內容,並將內容寫入到 output.txt 文件中 readerStream.pipe(writerStream); console.log("程序執行完畢");