nodejs Stream 流

nodejs中很对对象实现了这个stream抽象接口,所有的stream对象都是eventemitter实列。

nodejs stream四种类型

  • Readable 可读操作
  • Writeable 可写操作
  • Duplex 可读可写操作
  • Transform 操作被写入数据 然后读出结果。

可读

/**
 * 
 * 1.创建可读对象
 * 2.设置编码格式
 * 3.监听 data 事件
 * 4.监听 end 事件
 * 5.监听错误对象
 * 
 */

var fs = require('fs');
var data = '';
var readerStream = fs.createReadStream('./data.txt');

readerStream.setEncoding('UTF8');

readerStream.on('data', function (chunk) {
    data += chunk;
});

readerStream.on('end', function () {
    console.log(data);

})

readerStream.on('error', function (err) {
    console.error(err);

})

console.log('end');

可写

var fs = require('fs');
var data = 'bbbbbbbbbbbbbbb';

/**
 * 
 * 1.创建可写对象
 * 2.调用写入方法
 * 3.标记写入结束
 * 4.监听写入结束
 * 5.错误监听
 * 
 */
var writeStream = fs.createWriteStream('data.txt');

writeStream.write(data, 'UTF8');

writeStream.end();

writeStream.on('finish', function () {
    console.log('write end');

})

writeStream.on('error', function (err) {
    console.error(err);

})

管道操作--链式流

/**
 * 
 * 管道读写 实现大数据文件复制/传输
 * 
 * 1.创建一个可读流和一个可写流
 * 2.可读流调用pipe函数实现文件复制
 * 
 */

var fs = require('fs');

var readerStream = fs.createReadStream('input.txt');
var writeStream = fs.createWriteStream('output.txt');

readerStream.pipe(writeStream);

console.log('end');

猜你喜欢

转载自blog.csdn.net/zYjmor/article/details/82898443