gpt4 book ai didi

c++ - 大量文件的原子删除

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:13 25 4
gpt4 key购买 nike

我正在尝试一次性删除 10000 多个文件,例如要么全部都需要立即删除,要么都需要留在原地。

当然,显而易见的答案是将所有文件移动到一个临时目录,并在成功时递归删除它,但这会使所需的 I/O 量加倍。

压缩不起作用,因为 1) 我不知道需要删除哪些文件,以及 2) 文件需要经常编辑。

有什么可以帮助降低 I/O 成本的方法吗?任何平台都可以。

编辑:我们假设随时可能发生停电。

最佳答案

Kibbee 是正确的:您正在寻找交易。但是,如果您不想,则不必依赖数据库或特殊的文件系统功能。交易的本质是这样的:

  1. 将一条记录写入一个特殊文件(通常称为“日志”),列出您要删除的文件。
  2. 一旦安全地写入此记录,请确保您的应用程序就像文件已被删除一样。
  3. 稍后,开始删除交易记录中指定的文件。
  4. 删除所有文件后,删除交易记录。

请注意,在步骤 (1) 之后的任何时候,您都可以重新启动您的应用程序,它将继续删除逻辑上已删除的文件,直到它们最终全部消失。

请注意,您不应在这条道路上走得太远:否则您将开始重新实现一个真正的交易系统。但是,如果您只需要很少的几个简单事务,则自己动手的方法可能是可以接受的。

关于c++ - 大量文件的原子删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1622592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com