Node.js 如何确保“fs.appendFileSync”永远不会部分成功?

Node.js 如何确保“fs.appendFileSync”永远不会部分成功?,node.js,file-io,Node.js,File Io,到目前为止,我的假设是,如果fs.appendFileSync抛出异常,那么可以保证目标文件的内容一点也没有更改 通常不涉及此问题和故障案例 显示它调用fs.writeFileSync,而fs.writeFileSync又执行以下操作: try { while (length > 0) { const written = fs.writeSync(fd, data, offset, length, position); offset += written

到目前为止,我的假设是,如果fs.appendFileSync抛出异常,那么可以保证目标文件的内容一点也没有更改

通常不涉及此问题和故障案例

显示它调用fs.writeFileSync,而fs.writeFileSync又执行以下操作:

  try {
    while (length > 0) {
      const written = fs.writeSync(fd, data, offset, length, position);
      offset += written;
      length -= written;
      if (position !== null) {
        position += written;
      }
    }
  } finally {
    if (!isUserFd) fs.closeSync(fd);
  }
我能否从上面推断fs.appendFileSync在部分更改目标文件后可能引发异常


如果是,那么是否有任何已知的工具或范例来解决这种相当难以处理的情况?

是的,fs.appendFileSync不支持任何形式的事务afaik。虽然我不知道这个用例的任何特定nodeJS模块,但是您可以通过

复制文件 附加到重复的tmp文件 使用tmp文件重命名/替换原始文件