我正在编写一个程序来查找文件的重复项。
我有两个文件夹,我必须在其中找到重复项。在最坏的情况下,我将不得不将所有文件相互比较。我想生成每个文件的校验和,比较校验和,然后如果校验和相等,则逐字节检查以确保文件完全相同。
问题是什么校验和生成器的速度快到可以在上面浪费时间而不是逐字节检查?
最佳答案
您可以通过获取文件的完整列表然后按长度排序来减少必须进行的比较次数以及 I/O 量。如果两个文件的长度不同,则它们不可能相同。因此,除了获取无论如何都必须获取的目录信息之外,您无需执行任何 I/O 即可消除大量文件。
如果只有两个文件具有相同的长度 X,则您不必为这些文件计算校验和。直接比较就可以了。
如果有三个或更多文件具有相同的长度,那么您最好计算所有三个文件的校验和,比较校验和,然后在校验和匹配时逐字节比较。
关于c# - 使用校验和进行文件比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19706695/