我正在开发一个程序,在整个驱动器中搜索给定的文件。目前,我对已知文件计算MD5哈希值,然后递归扫描所有文件,寻找匹配项。
唯一的问题是,MD5在大文件上速度非常慢。有没有更快的替代方案,同时保持非常小的误报率?
所有代码都使用C#编写。
谢谢。
更新
我读到即使是MD5也可以相当快,并且磁盘I/O应该是限制因素。这让我相信我的代码可能不是最优的。这种方法有什么问题吗?
MD5 md5 = MD5.Create();
StringBuilder sb = new StringBuilder();
try
{
using (FileStream fs = File.Open(fileName, FileMode.Open, FileAccess.Read))
{
foreach (byte b in md5.ComputeHash(fs))
sb.Append(b.ToString("X2"));
}
return sb.ToString();
}
catch (Exception)
{
return "";
}
ToLower
和ToUpper
的意义是什么? - Chibueze Opata