Node.js Stream(流)

Stream 是一个抽象接口,Node 中有很多对象实现了这个接口。例如,对http 服务器发起请求的request 对象就是一个 Stream,还有stdout(标准输出)。

Node.js,Stream 有四种流类型:

  • Readable - 可读操作。

  • Writable - 可写操作。

  • Duplex - 可读可写操作.

  • Transform - 操作被写入数据,然后读出结果。

所有的 Stream 对象都是 EventEmitter 的实例。常用的事件有:

  • data - 当有数据可读时触发。

  • end - 没有更多的数据可读时触发。

  • error - 在接收和写入过程中发生错误时触发。

  • finish - 所有数据已被写入到底层系统时触发。


读文件流例子

在js文件的相同目录建立input.txt 文件


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

//创建可以读流
var readStream = fs.createReadStream('input.txt');

//设置编码
readStream.setEncoding('UTF8');

readStream.on('data',function(node){
	
	data += node;
	
});

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

readStream.on('error',function(e){
	console.log(e.stack);
})

console.log("程序完成")