1. 程式人生 > 程式設計 >Node.js學習之內建模組fs用法示例

Node.js學習之內建模組fs用法示例

本文例項講述了Node.js學習之內建模組fs用法。分享給大家供大家參考,具體如下:

IDE為VSCode

.js內建的fs模組就是檔案系統模組,負責讀寫檔案

'use strict'
var fs = require('fs');
//非同步讀取檔案(文字)編碼格式指定為utf-8
fs.readFile('sample.txt','utf-8',function(error,data){
  if(error){
    console.log('error');
  }else{
    console.log(data);
  }
});
//非同步讀取二進位制檔案返回的data為buffer
fs.readFile('sample.png',function(err,data){
  if(err){
    console.log('error')
  }else{
    console.log(data.length+'bytes');
  }
});
//同步讀取(可以加try),非同步不能try,並非立即執行不能捕捉
try {
  var data = fs.readFileSync('sample.png');
  console.log(data.length+'bytes');
} catch (error) {
}
//再來看看寫入檔案往一個文字中寫,該文字的格式要是utf-8,不寫編碼格式預設也是utf-8
fs.writeFile('sample.txt','這是我要寫入的文字',data){
  if(err){
    console.log('error');
  }else{
    console.log('success');
  }
})
//同步無回撥,略過
//檢視檔案的資訊使用stat()比如,也可以使用同步,不一一演示
fs.stat('sample.txt',stat){
  if(err){
    console.log('error')
  }else{
    //建立時間
    console.log(stat.birthtime);
    //修改時間
    console.log(stat.mtime);
    console.log(stat.size);
    console.log(stat.isFile);
  }
})

'use strict'
var fs = require('fs');
//建立一個檔案讀取流,返回一個ReadStream物件,可以對物件進行事件監聽,
//data事件表示流的資料已經可以讀取了,一般會執行多次,end事件表示這個流已經到末尾了,沒有資料可以讀取了,
//error事件表示出錯了,chunk是文字流的一部分資料
var rs = fs.createReadStream('sample.txt','utf-8');
rs.on('data',function(chunk){
  console.log('data:')
  console.log(chunk);
});
rs.on('end',function(){
  console.log('end');
});
rs.on('error',function(error){
  console.log('error');
});
//寫入流(原來文字檔案有內容,會覆蓋掉)
var is = fs.createWriteStream('copy.txt','utf-8');
is.write('我寫點東西');
is.write('我再寫點東西');
is.end;
//我們用pipe()把一個檔案流和另一個檔案流串起來,這樣原始檔的所有資料就自動寫入到目標檔案裡了,所以,這實際上是一個複製檔案的程式:
var rs = fs.createReadStream('sample.txt','utf-8');
var is = fs.createWriteStream('copy.txt','utf-8');
rs.pipe(is);
//預設情況下,當Readable流的資料讀取完畢,end事件觸發後,將自動關閉Writable流。如果我們不希望自動關閉Writable流,需要傳入引數如下
// rs.pipe(is,{end:false});

希望本文所述對大家node.js程式設計有所幫助。