我是java-script&的新手。 ...的NodeJS
我有一个文件处理流,它由多个流组合在一起组成。效果很好...我想通过有条件地阻止处理流和读取达到阈值来增强它。
inputStream.
pipe(unzip()).
pipe(latin1Decoder).
pipe(
combine(
through(function(obj){
//part-1 -
this.push(obj);
}),
through(function(obj){
//part-2-
this.push(obj);
})
));
在part-1
如果我this.push(null)
,那么组合器将忽略传入的输入。
但是,我无法停止阅读该文件。这很烦人,因为文件非常庞大。
从管道内部访问输入流以关闭它的最佳方法是什么?
答案 0 :(得分:1)
好的,这就是我最终解决问题的方法:
var cnt = 0;
var processingStream = combine(unzip(), latin1Decoder(), part1(), part2());
inputStream.pipe(processingStream);
inputStream.on('data', function(x) {
var lineCnt = x.toString().split(/\r\n|\r|\n/).length;
cnt += lineCnt;
if (cnt > 5) {
inputStream.close();
inputStream.unpipe(processingStream);
processingStream.end();
}
});
可能不是最有效的方式,但它符合我的要求。
请注意,输入流以块的形式读取,因此可以一次读取多行。