node.js readFile race condition - 未完全写入磁盘时读取文件

时间:2012-10-11 22:17:21

标签: node.js

我的node.js应用程序每秒运行一个函数(递归地)读取.json文件的目录树。这些文件通过FTP从客户端上传到服务器,并放在运行节点脚本的文件夹中。

我发现(至少我认为发生了什么),是节点在尝试读取之前没有等待.json文件完全写入,因此,抛出了一个'意外结束输入'错误。似乎文件系统需要几秒钟(可能是毫秒)才能正确写入文件。这也可能与从FTP写入的文件有关(可能是开销,我在这里猜测......)

在尝试使用节点读取文件之前,有没有办法可以等待文件完全写入filesytem?

fs.readFile(file, 'utf8', function(err, data) {
    var json = JSON.parse(data); // throws error
});

1 个答案:

答案 0 :(得分:1)

您可以检查文件是否仍在增长:

https://github.com/felixge/node-growing-file