我将fs.createReadStream
放到一个大文件上。
我可以暂时停止流吗?
我在doco中没有看到一个,并尝试拨打stream.end()
,但它仍处理整个文件,stream.close()
为undefined
。
任何帮助都会很棒,谢谢。
答案 0 :(得分:2)
stream.destroy()
可能就是你想要的。更多详情here。
答案 1 :(得分:0)
编辑:
此时代码注释无法通过设计实现:https://github.com/joyent/node/blob/master/lib/_stream_readable.js#L884
根据文档的可能解决方案是使用偏移:http://nodejs.org/api/fs.html#fs_fs_createreadstream_path_options
读取100个字节的文件的最后10个字节的示例 长: fs.createReadStream('sample.txt',{start:90,end:99});
答案 2 :(得分:0)
根据How to close a readable stream (before end)?,您可以在readStream上调用close()
,它会在结束前关闭。我写了一个简单的脚本来测试它:
var fs = require('fs');
var l = 0
var rs = fs.createReadStream("some large file")
.on("data", function(data){
console.log("got data");
l += data.length;
if (l > 655360) {
rs.close();
console.log("close");
}
})
.on("end", function(){
console.log("shouldn't be logged");
});
输出:
got data
got data
got data
got data
got data
got data
got data
got data
got data
got data
got data
close
got data
close
虽然close
打印两次,但它会结束readStream。