Node.js可读文件流无法获取数据

时间:2013-08-10 05:06:07

标签: node.js stream

我正在尝试创建一个可读文件流,我可以从中读取单个字节。我正在使用下面的代码。

var rs = fs.createReadStream(file).on('open', function() {
    var buff = rs.read(8); //Read first 8 bytes
    console.log(buff);
});

鉴于该文件是一个至少8字节的现有文件,为什么我得到'null'作为此输出?

2 个答案:

答案 0 :(得分:4)

事件open表示已初始化流,但这并不意味着您可以从流中读取。您必须收听readabledata个事件。

var rs = fs.createReadStream(file);

rs.once('readable', function() {
    var buff = rs.read(8); //Read first 8 bytes only once
    console.log(buff.toString());
});

答案 1 :(得分:0)

看起来你正在呼叫this rs.read() method。但是,该方法仅在Streams界面中可用。在Streams界面中,您正在查找'data'事件,而不是'open'事件。

如上所述,文档实际上建议不要这样做。相反,如果你想要流式传输,你应该一次处理块:

var rs = fs.createReadStream('test.txt');

rs.on('data', function(chunk) {
    console.log(chunk);
});

如果您只想阅读文件的特定部分,可能需要查看较低级别的fs.open()fs.read()