我可以在结束之前closures节点的readStream吗?
我将一个fs.createReadStream
放到一个大文件中。
我能否部分停止stream?
我没有在doco中看到一个,并尝试调用stream.end()
但它仍然处理整个文件,并且stream.close()
undefined
。
任何帮助将是伟大的,谢谢。
stream.destroy()
可能是你想要的。 更多细节在这里 。
编辑:
在代码注释中可以看出,这是不可能的。https : //github.com/joyent/node/blob/master/lib/_stream_readable.js#L884
根据文档可能的解决scheme是使用偏移量: http : //nodejs.org/api/fs.html#fs_fs_createreadstream_path_options
读取长度为100个字节的文件的最后10个字节的示例:fs.createReadStream('sample.txt',{start:90,end:99});
根据如何closures可读stream(在结束之前)? ,可以的,你可以在readStream上调用close()
,并在结束之前closures。 我写了一个简单的脚本来testing它:
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。