我的node.js应用程序每秒运行一个函数,以(递归)读取.json文件的目录树。这些文件从客户端通过FTP上传到服务器,并放置在运行节点脚本的文件夹中。
我发现(至少在我看来正在发生的事情)是,该节点在尝试读取该文件之前没有等待.json文件被完全写入,因此抛出了“输入意外结束”错误。似乎文件系统需要几秒钟(也许几毫秒)才能正确写入文件。这也可能与从FTP写入的文件有关(可能有开销,我完全在这里猜测...)
有没有一种方法可以让我们等待文件完全写入文件系统,然后再尝试通过节点读取它?
fs.readFile(file, 'utf8', function(err, data) {
var json = JSON.parse(data); // throws error
});
最佳答案
您可以检查文件是否仍在增长:
https://github.com/felixge/node-growing-file
关于node.js - node.js readFile竞争条件-未完全写入磁盘时读取文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12849427/