酒濃碼濃 - node之stream

node之stream

stream 流

流是一個抽象名詞。

你可以將一片代碼當成一條河,每個詞都是一滴水。除非你用特殊手段打破常規,否則就會隨波逐流。就像CSS中有浮動,有定位,那麼默認展示的就是流。

 

讀取文本內容:

源碼:

var fs = require('fs');

var rs = fs.createReadStream('1.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 (err) { console.log('ERROR: ' + err); });

第一個參數爲事件:

data讀取的數據(打印出來爲文件的內容)

end結束

error錯誤

第二個參數爲回調

 

寫入文本內容:

源碼:

var ws1 = fs.createWriteStream('output1.txt', 'utf-8');

ws1.write('使用Stream寫入文本數據...\n');

...

ws1.write('END.');

ws1.end();
var ws2 = fs.createWriteStream('output2.txt');

ws2.write(new Buffer('使用Stream寫入二進制數據...\n', 'utf-8'));

...

ws2.write(new Buffer('END.', 'utf-8'));

ws2.end();

 

pipe()方法

將兩個流拼接起來,可以想象成數組中有個方法叫concat。

一般複製文件這麼寫,將rs的內容寫入到ws裏

var rs = fs.createReadStream('sample.txt');

var ws = fs.createWriteStream('copied.txt');

rs.pipe(ws);

當讀完數據,end事件觸發,將自動關閉ws流

可設置不自動關閉 rs .pipe(ws , { end: false });

 

下圖爲實戰用到的代碼:

想了解更多去官網node

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章