我正在尝试创建一个可读文件流,我可以从中读取单个字节。我正在使用下面的代码。
var rs = fs.createReadStream(file).on('open', function() {
var buff = rs.read(8); //Read first 8 bytes
console.log(buff);
});
鉴于该文件是一个至少8字节的现有文件,为什么我得到'null'作为此输出?
答案 0 :(得分:4)
事件open
表示已初始化流,但这并不意味着您可以从流中读取。您必须收听readable
或data
个事件。
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()
。