我可以在结束之前关闭节点readStream吗?

时间:2013-11-25 19:58:14

标签: node.js stream

我将fs.createReadStream放到一个大文件上。

我可以暂时停止流吗?

我在doco中没有看到一个,并尝试拨打stream.end(),但它仍处理整个文件,stream.close()undefined

任何帮助都会很棒,谢谢。

3 个答案:

答案 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。