nodejs筆記之流(stream)
阿新 • • 發佈:2019-02-04
nis tab and 出錯 htm ons 設置 索引 進行
nodejs的stream有四種流類型:
可讀:Readable
可寫:Writable
可讀可寫:Duplex
操作被寫入數據,然後讀出結果:Transform
常用事件:
data:有數據可讀時觸發
end:沒有數據可讀觸發
error:讀寫過程出錯觸發;
finish:所有數據被寫入到底層系統時觸發;
創建可讀流:
// 註: utf8中,中文占三個字符 // var data = ‘‘; // 創建可讀流二 var fs = require("fs"); var readerStream = fs.createReadStream(‘./file/333.txt‘,{ flags:‘r‘,//我們要對文件進行何種操作start:3,//從索引為3的位置開始讀 //這是我的見過唯一一個包括結束索引的 end:40,//讀到索引為8結束 highWaterMark:3//緩沖區大小 }); // 設置編碼為 utf8。 readerStream.setEncoding(‘UTF8‘); // 處理流事件 --> data, end, and error readerStream.on(‘data‘, function(chunk) { // data += chunk; console.log(chunk + "------"); }); readerStream.on(‘end‘,function(data){ console.log(data); }); readerStream.on(‘error‘, function(err){ console.log(err.stack); }); console.log("程序執行完畢");
管道讀寫操作:
//讀取一個文件內容後寫入另一個文件中,會覆蓋原有內容 // 創建一個可寫流 var fs = require("fs"); var readStream = fs.createReadStream(‘./file/demo.html‘); var writeStream = fs.createWriteStream(‘output.html‘);// 管道讀寫操作 // 讀取 input.txt 文件內容,並將內容寫入到 output.txt 文件中 readStream.pipe(writeStream); console.log("程序執行完畢"); //讀取一個文件內容後寫入另一個文件中,追加在原有內容後 // 追加 var read = fs.createReadStream(‘./file/1.txt‘); //設置第二個參數append var write = fs.createWriteStream(‘output.txt‘, { ‘flags‘: ‘a‘ }); //管道流讀寫操作 read.pipe(write); console.log(‘執行完畢‘);
nodejs筆記之流(stream)