vb.net - 查找重复文件的好方法?

标签 vb.net duplicates

我对 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/

相关文章:

jpa - JPQL:内部记录,无重复记录

两个查询的SQL UNION,列名重复错误

.net - Crystal Reports 错误 : cannot find CrystalDecisions. Windows.Forms 版本 10.2.3600

java - 对非常大的数据进行重复检测

android - 使用内存分析器追踪内存泄漏 - 带有美元符号的多个 Activity

根据因素删除重复的行

python - 使用 tkinter 创建 .exe 文件,Vb 或 python 哪个更容易?

vb.net - 如何允许用户在 vb.net 的文本框中只输入数字?

c# - 使用 web.config 的角色管理提供程序?

VB.Net BufferedGraphics透明背景