您好,我正在使用nodejs和scoket io将一些数据推送到目标。我从json文件中读取json数据以将其推送到目标。nodejs在使用fstat读取文件时抛出偏移出界限错误
我正在使用fs模块的fstat来读取一个文件,但是每当有一个并发校正或者一段时间后,它会抛出偏移超出限制的错误。
这里是代码片段。
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)
有人能指导我在这里可能是什么问题,因为从过去两天与此挣扎的错误。
是否有不使用可读流的具体原因是什么? –
同时写入和读取相同的文件必然会在某些时候导致错误,而没有某种形式的锁定。 – robertklep
@rodrigo使用json文件读取的原因是它正在被其他应用程序更新,并且正在从nodejs读取,以使用socket.io将其推送到目标。如果您提供了一些关于如何在此上下文中使用可读流的信息,那么这将非常有帮助 –