1. 程式人生 > >nodejs檔案操作,流和管道

nodejs檔案操作,流和管道

/*
 * 檔案系統模組fs模組,對檔案進行操作,讀檔案,寫檔案,刪除檔案等
 
 //讀檔案
 在node.js中為讀取檔案提供了兩種方式:直接讀取()和流讀取(方便網路通訊)
 直接讀取有同步和非同步兩種
 
 //非同步讀取
 程式從上往下執行,當遇到非同步語句時,同步的程式碼繼續向後執行,非同步單獨開一個任務程序,
 在主程序裡面分出一個任務程序,任務程序在讀取檔案完成後再通知主程序,呼叫回撥函式中的函式
 var fs = require("fs");
 fs.readFile('input.txt', function(err, data){
 if(err){
 console.error(err);
 }
 console.log("非同步讀取:"+data.toString());
 });
 ...//主程序從這裡繼續執行
 
 //同步讀取
 程式從上往下執行,在執行下一句時,前面一句必須已經執行完
 就是按照程式碼順序執行,會比較耗時吧,如果讀取檔案所花時間較長的話
 var fs= require("fs");
 var data=fs.readFileSync('input.txt');
 console.log("同步讀取:"+data.toString());
 
 
 //寫檔案
 同樣也有同步和非同步兩種方式
 fs.writeFile();3個引數,檔名,資料,回撥函式
 fs.writeFileSync();
 
 //刪除檔案
 fs.link();兩個引數,一個為檔名,一個回撥函式;
*/


/*
 * 資料在網路上傳輸都是使用的位元組碼;
  流是一組有序的,有起點,有終點的位元組資料的傳輸方式。
 
  //讀取檔案流
  var fs = require('fs');
  var data = "";
  var readerStream = fs.createReadStream("xx.txt");//建立可讀流;架管道
  readerStream.on('data',function(chunk){   //來監聽data事件,有資料讀出時就會觸發
   data+=chunk;
  });
 
  readerStream.on('end', dunction(){      //監聽end事件,當檔案讀取完畢時,就會觸發
  console.log(data);
  })
 
  readerStream.on('error', dunction(){      //監聽error事件,當檔案讀取出錯時,就會觸發
  console.log(data);
  })
 
  console.log("程式執行完畢");
 
  //寫入檔案流
  var fs = require('fs');
  var data = "";
  var str = fs.createWriteStream("xx.txt");//建立可寫流;架管道
  //向str寫入內容
  str.write('隨便寫點。。');
  //寫完以後要結束,如果不結束,它將一直等待;
  str.end();
  //繫結一個finish事件
  str.on('finish',function(){
  console.log('寫入成功');
  })
  //也有error事件等
 */




/*
 *管道提供了一個輸出流到輸入流的機制,將兩邊對接,流入流出,可以實現大檔案的複製等,非常方便。
 
 var fs = require("fs");
 //建立一個可讀流
 var readerStream = fs.createReadStream("input.txt");
  //建立一個可寫流
  var writerStream = fs.creatWriteStream("output.txt");
  //複製,從輸出流入到輸入裡面
  readerStream.pipe(writerStream);
 */