Linux 在ubuntu中快速写入许多文件时,如何确保磁盘正确刷新?
我在node.js脚本中创建了许多文件 我对数百万个文件执行类似操作: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
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我在上面的示例中省略了一些代码,以减少其冗长性。实际的程序会做一些事情来更新数据,我在这里省略了,因为问题是我需要很快更新文件,并且不能使用异步版本,因为它可能会导致数据不一致。