我正在开发一个在整个驱动器中搜索给定文件的程序。目前,我计算已知文件的 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 "";
}