在 Node.js 中处理之前等待文件完成写入磁盘

tur*_*tle 5 node.js

我有一个 Node 函数来检查文件是否存在,如果它确实存在,该函数会做一些进一步的处理。我的问题是 Node 正在检查我的文件是否存在,但它没有等待文件完成写入。在执行我的函数的其余部分之前,如何查看文件是否退出并等待文件完成写入?

var doStuff = function(filename, callback) {


  // writing to file here

  fs.exists(filename, function(exists) {
    if (exists) {
      // do stuff
      callback()
    }
  });

});
Run Code Online (Sandbox Code Playgroud)

我看到有一个同步版本的fs.exists. 我应该用那个吗?或者我应该添加一个 setTimeout 调用来等待一小段时间,然后再在文件上执行动作?什么选择最好?

Sam*_*amT 2

只需将其放入您的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()
    }
  });

});
Run Code Online (Sandbox Code Playgroud)

  • 显然,当执行回调时,不能保证文件写入已经在文件系统级别完成。 (7认同)