使用校验和进行文件比较

Saa*_*juu 1 c# algorithm checksum compare file

我正在编写一个程序来查找重复的文件.

我有两个文件夹,我必须找到重复的文件夹.在最坏的情况下,我必须将所有文件相互比较.我正在考虑生成每个文件的校验和,比较校验和,然后如果校验和相等,则执行逐字节检查以确保文件完全相同.

问题是校验和生成器的速度是否足够快以浪费时间而不是逐字节检查?

Jim*_*hel 6

您可以通过获取文件的完整列表然后按长度排序来减少必须进行的比较次数以及I/O量.如果两个文件的长度不同,则它们不能相同.因此,除了获取目录信息之外,您可以在不执行任何I/O的情况下消除大量文件,无论如何都要获取目录信息.

如果只有两个具有相同长度的文件X,那么您不必为这些文件计算校验和.只是直接比较它们.

如果有三个或更多文件具有相同的长度,那么最好计算所有三个文件的校验和,比较校验和,然后在校验和匹配时进行逐字节比较.