gpt4 book ai didi

c++ - 在 C++ 中查找重复文件的最佳方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:11 27 4
gpt4 key购买 nike

我想用 C++ 在文件系统中查找重复文件。有没有算法可以尽快做到这一点?我是否需要创建一个多线程应用程序,或者我可以只使用一个线程来完成它?

最佳答案

我同意 Kerrek SB 的观点,有比 C++ 更好的工具,但是,假设您确实需要在 C++ 中执行此操作,这里有一些建议和在您的实现中需要考虑的事项:

  1. 使用 boost::filesystem 进行可移植的文件系统遍历

  2. 散列每个文件的建议非常合理,但首先制作一个以文件大小为关键的 multimap 可能更有效。然后仅在存在重复大小的文件时应用哈希。

  3. 决定如何处理空文件和符号链接(symbolic link)/快捷方式

  4. 确定您希望如何处理特殊文件,例如在 unix 上你有目录 fifos、sockets 等

  5. 考虑到文件或目录结构在您的算法运行时可能会更改、消失或移动

  6. 考虑到某些文件或目录可能无法访问或损坏(例如递归目录链接)

  7. 使线程数可配置,因为有意义的并行化量取决于底层磁盘硬件和配置。如果您使用的是简单的硬盘驱动器而不是昂贵的 san,情况会有所不同。但是,不要做出假设;测试一下。例如,Linux 非常擅长缓存文件,因此您的许多读取都来自内存,因此不会阻塞 i/o。

关于c++ - 在 C++ 中查找重复文件的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11760420/

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