Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在ubuntu中快速写入许多文件时,如何确保磁盘正确刷新?_Linux_Node.js_Macos_Unix_Ubuntu - Fatal编程技术网

Linux 在ubuntu中快速写入许多文件时,如何确保磁盘正确刷新?

Linux 在ubuntu中快速写入许多文件时,如何确保磁盘正确刷新?,linux,node.js,macos,unix,ubuntu,Linux,Node.js,Macos,Unix,Ubuntu,我在node.js脚本中创建了许多文件 我对数百万个文件执行类似操作: if(!fs.existsSync(path)){ var empty = {}; fs.writeFileSync(path,JSON.stringify(empty,null,3)); } var data = fs.readFileSync(path); var file = JSON.parse(data); file[aKey] = "som

我在node.js脚本中创建了许多文件

我对数百万个文件执行类似操作:

    if(!fs.existsSync(path)){
        var empty = {};
        fs.writeFileSync(path,JSON.stringify(empty,null,3));
    }

    var data = fs.readFileSync(path);
    var file = JSON.parse(data);
    file[aKey] = "someadata";
    fs.unlinkSync(path);
    fs.writeFileSync(path, JSON.stringify(file,null,3));
在一些地方,我试着读文件

    if(!fs.existsSync(previousPath)){
        var file = {};
        fs.writeFileSync(previousPath,JSON.stringify(file,null,3));
    }
    var data = fs.readFileSync(previousPath);
这在OSX上可以正常工作。但是在Ubuntu中的node版本上,同步方法似乎并不总是同步的——有时node.js在尝试读取FileSync时崩溃,说路径不存在,即使它应该存在,因为我刚才在它上面调用了fs.writeFileSync

ubuntu上节点的版本:v0.10.33 在mac上:v0.13.0-pre


有什么建议吗?v0.10.33似乎是ubuntu存储库中的最新版本。

为什么不使用异步版本?据我所知,它们是推荐的。这有点不相关,但是如果您在下一行写入相同的路径,为什么要取消路径处的文件链接呢?fs.writeFileSync将只覆盖文件,因此无需事先取消fs.unlink。同样,为什么要读取您刚刚编写的文件?@nha我使用sync,因为我需要以可确定的方式创建文件系统,因为我需要重复更新文件。@mscdex我在上面的示例中省略了一些代码,以减少其冗长性。实际的程序会做一些事情来更新数据,我在这里省略了,因为问题是我需要很快更新文件,并且不能使用异步版本,因为它可能会导致数据不一致。