【发布时间】:2010-09-22 06:29:01
【问题描述】:
我正在开发一个程序,它可以在整个驱动器中搜索给定文件。目前,我计算已知文件的 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 "";
}
【问题讨论】:
-
不要使用 .ToString("x2") 使用 blogs.msdn.com/b/blambert/archive/2009/02/22/…,这样可以节省一些时间。
-
打电话给
ToLower和ToUpper有什么意义?