在Node.js中处理之前,请等待文件完成写入磁盘
我有一个节点函数,它检查一个文件是否存在,然后如果它确实存在,该函数将执行一些进一步的处理。我的问题是,节点正在检查我的文件是否存在,但它并没有等待文件完成写入。在执行函数的其余部分之前,如何查看文件是否退出并等待文件写入完成在Node.js中处理之前,请等待文件完成写入磁盘,node.js,Node.js,我有一个节点函数,它检查一个文件是否存在,然后如果它确实存在,该函数将执行一些进一步的处理。我的问题是,节点正在检查我的文件是否存在,但它并没有等待文件完成写入。在执行函数的其余部分之前,如何查看文件是否退出并等待文件写入完成 var doStuff = function(filename, callback) { // writing to file here fs.exists(filename, function(exists) { if (exists) {
var doStuff = function(filename, callback) {
// writing to file here
fs.exists(filename, function(exists) {
if (exists) {
// do stuff
callback()
}
});
});
我看到有一个同步版本的
fs.exists
。我应该用这个吗?或者我应该添加一个setTimeout调用,以便在文件上actin之前等待一小段时间?什么选项最好?只需将它放入fs.writeFile
回调中即可。不过,请务必检查是否有错误,这样可以省去调用fs.exists的麻烦。:
fs.writeFile(filename, "stuff to write", function (err) {
if (err) {
// something went wrong, file probably not written.
return callback(err);
}
fs.exists(filename, function(exists) {
if (exists) {
// do stuff
callback()
}
});
});
我看不到您的代码片段中有任何写入内容。写入内容发生在
fs.exists
检查之前。我已经添加了一条注释来表示我在哪里写作。这还不够。你问了一个关于写作的问题,然后期望我们猜测你是如何做到的;)这是行不通的。显然,当执行回调时,不能保证文件系统级别上的文件写入已经完成。