Node.js可读文件流未获取数据
我正在尝试创建一个可读的文件流,可以从中读取单个字节。我正在使用下面的代码Node.js可读文件流未获取数据,node.js,stream,Node.js,Stream,我正在尝试创建一个可读的文件流,可以从中读取单个字节。我正在使用下面的代码 var rs=fs.createReadStream(文件).on('open',function()){ var buff=rs.read(8);//读取前8个字节 控制台日志(buff); }); 既然该文件是一个至少有8个字节的现有文件,为什么我会得到“null”作为该文件的输出 看起来你在打电话。但是,该方法仅在Streams接口中可用。在Streams界面中,您要查找的是'data'事件,而不是'open'事
var rs=fs.createReadStream(文件).on('open',function()){
var buff=rs.read(8);//读取前8个字节
控制台日志(buff);
});
既然该文件是一个至少有8个字节的现有文件,为什么我会得到“null”作为该文件的输出 看起来你在打电话。但是,该方法仅在Streams接口中可用。在Streams界面中,您要查找的是
'data'
事件,而不是'open'
事件
也就是说,文件实际上建议不要这样做。相反,如果您想流式处理块,您可能应该一次处理它们:
var rs = fs.createReadStream('test.txt');
rs.on('data', function(chunk) {
console.log(chunk);
});
如果只想读取文件的特定部分,可能需要查看较低级别的
fs.open()
和fs.read()
。事件open
表示流已初始化,但不表示可以从流中读取。您必须侦听可读的
或数据
事件
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
总是返回正确数量的字节(如果没有那么多,则返回null),而不是fs.read,它返回的字节可能比请求的少。我不能使用第二种方法,rs.read(8)
总是返回null。我只能在等待事件readable
@ffleandro我已删除该部分时读取。我想它已经不起作用了。第一种方法是正确的阅读方法。