您正在使用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)
有人可以在这里指导我过去两天挣扎的问题。
答案 0 :(得分:1)
如果文件存在但是为空(0字节),则调用fs.read()
将失败并显示您正在显示的错误。
因此,在阅读之前,请确保stats.size
不是0。