Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js可读文件流未获取数据_Node.js_Stream - Fatal编程技术网

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我已删除该部分时读取。我想它已经不起作用了。第一种方法是正确的阅读方法。