原子地写入多个文件

时间:2012-03-20 20:31:07

标签: macos cocoa nsfilemanager

假设我有一个包含少量文件,图像,文本等的文件夹,只需要有多个文件且文件夹相当大(> 100 mb)。现在我想更新这个文件夹中的五个文件,但我想原子地这样做,通常我只是创建一个临时文件夹并将所有内容写入其中,如果成功,只需替换现有文件夹即可。但由于I / O价格昂贵,我真的不想这样做(重新启动数百个文件只是为了更新五个似乎是一个巨大的开销)。但我怎么能原子地写这五个文件呢?注意,我希望所有文件的写入都是原子的,而不是单独的每个文件。

1 个答案:

答案 0 :(得分:3)

您可以调整原始解决方案:

  1. 创建一个临时文件夹,其中包含指向原始文件的硬链接。
  2. 将五个新文件保存到临时文件夹中。
  3. 删除原始文件夹并在其位置移动硬链接文件夹。
  4. 创建一些链接应该很快,并且它可以避免重写所有文件。