我正在尝试创建一个可以读取单个字节的可读文件流。我正在使用下面的代码。
var rs = fs.createReadStream(file).on('open', function() {
var buff = rs.read(8); //Read first 8 bytes
console.log(buff);
});
鉴于该文件是至少 8 个字节的现有文件,为什么我会得到“空”作为输出?
事件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()