我可以在结束之前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。