我想检测目录树中的重复文件。当找到两个相同的文件时,只保留其中一个重复的文件,其余的重复文件将被删除以节省磁盘空间。
重复是指具有相同内容的文件,但文件名和路径可能不同。
我正在考虑为此目的使用哈希算法,但不同的文件有可能具有相同的哈希值,因此我需要一些额外的机制来告诉我文件不相同,即使哈希值相同因为我不想删除两个不同的文件。
您会使用哪种额外的快速可靠的机制?
最佳答案
计算散列会使你的程序运行缓慢。您最好还检查文件大小。所有重复文件应具有相同的文件大小。如果它们共享相同的文件大小,则应用散列检查。它将使您的程序执行得更快。
可以有更多的步骤。
- 检查文件大小是否相等
- 如果第 1 步通过,检查第一个和最后一个字节范围(比如 100 个字节)是否相等
- 如果第 2 步通过,请检查文件类型,
- 如果第 3 步通过,则检查最后的哈希值
您添加的条件越多,它的执行速度就越快,您可以通过这种方式避免最后的手段(散列)。
关于algorithm - 检测重复文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9808156/