<分区>
我想递归几个目录并在 n 个目录之间找到重复的文件。
我本能的想法是用一个全局哈希表或其他一些数据结构来保存我找到的每个文件;然后检查每个后续文件以确定它是否在文件的“主”列表中。显然,我认为这不会非常有效,而且“必须有更好的方法!”一直在我脑海里响起。
任何有关处理这种情况的更好方法的建议都将不胜感激。
标签 c# file comparison
<分区>
我想递归几个目录并在 n 个目录之间找到重复的文件。
我本能的想法是用一个全局哈希表或其他一些数据结构来保存我找到的每个文件;然后检查每个后续文件以确定它是否在文件的“主”列表中。显然,我认为这不会非常有效,而且“必须有更好的方法!”一直在我脑海里响起。
任何有关处理这种情况的更好方法的建议都将不胜感激。
最佳答案
您可以通过首先比较文件大小来避免散列。如果您从未找到大小相同的文件,则不必对它们进行哈希处理。一旦找到另一个具有相同大小的文件,您只对一个文件进行哈希处理,然后对它们进行哈希处理。
这应该比盲目散列每个文件快得多,尽管实现两层检查会更复杂。
关于C#,识别目录数组中重复文件的最快(最好?)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2814963/