我对 VB.Net (2008, Express Edition) 还不够了解,所以我想问一下是否有更好的方法来查找名称不同但内容相同的文件,即。重复。
在下面的代码中,我使用 GetFiles() 来检索给定目录中的所有文件,并且对于每个文件,使用 MD5 对其内容进行散列,检查该值是否已经存在于字典中:如果是,则它是一个重复,我会删除它;如果没有,我将这个文件名/哈希值添加到字典中供以后使用:
'Get all files from directory
Dim currfile As String
For Each currfile In Directory.GetFiles("C:\MyFiles\", "File.*")
'Check if hashing already found as value, ie. duplicate
If StoreItem.ContainsValue(ReadFileMD5(currfile)) Then
'Delete duplicate
'This hashing not yet found in dictionary -> add it
Else
StoreItem.Add(currfile, ReadFileMD5(currfile))
End If
Next
这是解决查找重复项问题的好方法,还是我应该了解更好的方法?
谢谢。
最佳答案
您可以通过以下方式进行优化
- 遍历所有文件并记录文件名和长度
- 然后将每个文件与相同长度的文件进行比较(MD5)
- 这是其中一项名为 embarrassingly parallel 的任务,因此您应该能够使用多线程来更有效地执行此操作,并且由于每个比较都是独立的
- 您只需要将一个文件与另一个文件进行一次比较,而不是双向比较,即。如果你做 compare(f1, f2) 那么你不需要做 compare(f2, f1)
我敢肯定还有很多其他的。
关于vb.net - 查找重复文件的好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2558873/