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



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

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

既然该文件是一个至少有8个字节的现有文件,为什么我会得到"null"作为输出?

事件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());
});

看起来您正在调用这个rs.read()方法。但是,该方法仅在Streams接口中可用。在Streams界面中,您要查找的是'data'事件,而不是'open'事件。

也就是说,医生实际上建议不要这样做。相反,如果你想流式传输,你可能应该一次处理块:

var rs = fs.createReadStream('test.txt');
rs.on('data', function(chunk) {
    console.log(chunk);
});

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

相关内容

  • 没有找到相关文章