孟欣 - node之stream

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mx18519142864/article/details/82854714

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

猜你喜欢

转载自blog.csdn.net/mx18519142864/article/details/82854714