我正在尝试创建一个可读文件流,可以从中读取单个字节。我正在使用下面的代码。
var rs = fs.createReadStream(file).on('open', function() {
var buff = rs.read(8); //Read first 8 bytes
console.log(buff);
});
既然该文件是一个至少有8个字节的现有文件,为什么我会得到"null"作为输出?
事件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());
});
看起来您正在调用这个rs.read()
方法。但是,该方法仅在Streams接口中可用。在Streams界面中,您要查找的是'data'
事件,而不是'open'
事件。
也就是说,医生实际上建议不要这样做。相反,如果你想流式传输,你可能应该一次处理块:
var rs = fs.createReadStream('test.txt');
rs.on('data', function(chunk) {
console.log(chunk);
});
如果您只想读取文件的特定部分,您可能需要查看较低级别的fs.open()
和fs.read()
。