我如何确保'fs.appendFileSync'永远不会部分成功?

问题描述 投票:0回答:1

到目前为止,我的假设是如果fs.appendFileSync引发异常,那么可以保证目标文件的内容没有改变一位。

[The official documentation of this function与这个问题无关(通常与失败案例无关)。

[The source code of this function显示它调用了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在部分更改目标文件后可能会引发异常吗?

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

非常感谢!

node.js file-io
1个回答
0
投票

是的,fs.appendFileSync不支持任何形式的交易afaik。虽然我不知道此用例的任何部分nodeJS模块,但您可以通过

手动进行操作
  • 复制文件
  • 附加到重复的tmp文件中
  • 用tmp文件重新命名/替换原始文件
© www.soinside.com 2019 - 2024. All rights reserved.