Node.js Stream(流)
Stream是一个抽象接口,Node中很多对象实现了这个接口;
如:对http服务器发起请求的requset对象就是一个Stream,还有stdout(标准输出)
Node.js中,Stream有四种流类型:
- Readable——可读
- Wirtable——可写
- Duplex——可读可写
- Transfrom——操作被写入数据,然后读出结果
所有的Stream对象都是EventEmitter的实例;常用的事件由: - data——当有数据可读性
- end——没有更多的数据可读时触发
- error——在接受和写入过程中发生错误触发
- finish——所有数据已经被写入到底层系统时触发
从流中读取数据
创建input.txt文件:
百度:www.baidu.com
创建main.js文件:
var fs = require("fs");
var data = '';
// 创建可读流
var readerStream = fs.createReadStream('input.txt');
// 设置编码为utf-8
readerStream.setEncoding('UTF8');
// 处理流事件 --> data, end, and errer
readerStream.on('data', function(chunk) {
data += chunk;
});
readerStream.on('end', function(chunk) {
console.log(data);
});
readerStream.on('error', function(err) {
console.log(err.stack);
});
console.log('执行完成')