Node.js可读文件stream不能获取数据

我试图创build一个可读的文件stream,我可以读取单个字节。 我使用下面的代码。

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

鉴于该文件是一个至less有8个字节的现有文件,为什么我会得到“空”作为这个输出?

事件open意味着stream已经被初始化,并不意味着你可以从stream中读取。 你将不得不听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'事件。

这表明,文件实际上build议不要这样做。 相反,如果您想要stream式传输,您应该一次处理大块:

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

如果你只想读取一个文件的特定部分,你可能需要查看fs.open()fs.read()