nodejs使用fstat在文件读取时抛出偏移超出绑定的错误

时间:2015-06-03 18:02:05

标签: node.js socket.io

您正在使用nodejs和scoket io将某些数据推送到目标。我正在从json文件中读取json数据,将其推向目标。

使用fs模块的fstat来读取文件,但是只要有一个concurren修正或者在一段时间之后它会抛出偏移超出限制的错误。

以下是代码段。

   fs.stat(fileName, function(error, stats) {
      fs.open(fileName, "r", function(error, fd2) {
         var buffer = new Buffer(stats.size);

          fs.read(fd2, buffer, 0, buffer.length, null, function(error, bytesRead, buffer) {
            var data = buffer.toString("utf8", 0, buffer.length);

           fs.close(fd2);
     })
    })

这是它抛出的错误

  fs.js:457
  binding.read(fd, buffer, offset, length, position, wrapper);
      ^
  Error: Offset is out of bounds
      at Object.fs.read (fs.js:457:11)
      at /var/custom_nodejs_projects/js/server.js:84:14
      at Object.oncomplete (fs.js:107:15)

有人可以在这里指导我过去两天挣扎的问题。

1 个答案:

答案 0 :(得分:1)

如果文件存在但是为空(0字节),则调用fs.read()将失败并显示您正在显示的错误。

因此,在阅读之前,请确保stats.size不是0。