我还不太了解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
这是解决重复问题的好方法吗,还是我应该知道更好的方法?
谢谢。
答案 0 :(得分:3)
您可以通过以下
进行优化我确定还有很多其他人。
答案 1 :(得分:0)
您可以通过仅计算一次MD5哈希值来优化此例程(问题中可能是拼写错误,或者您实际上只是两次)。
此外,您可以在计算哈希值之前比较文件长度:如果长度不同,哈希值也会不同(理论上它们可以相同,但这可能不太可能)。