编辑:我已将其重命名为示例,因为代码按预期工作。
我正在尝试复制文件,获取 MD5 哈希,然后删除副本。我这样做是为了避免另一个应用程序写入的原始文件的进程锁定。但是,我正在锁定我复制的文件。
File.Copy(pathSrc, pathDest, true);
String md5Result;
StringBuilder sb = new StringBuilder();
MD5 md5Hasher = MD5.Create();
using (FileStream fs = File.OpenRead(pathDest))
{
foreach(Byte b in md5Hasher.ComputeHash(fs))
sb.Append(b.ToString("x2").ToLower());
}
md5Result = sb.ToString();
File.Delete(pathDest);
然后我得到一个'进程无法访问文件'异常File.Delete()
'。
我希望通过该using
声明,文件流将很好地关闭。我也尝试过单独声明文件流,删除,并在读取后using
放置fs.Close()
和。fs.Dispose()
在此之后,我注释掉了实际的 md5 计算,代码执行,文件被删除,所以看起来它与ComputeHash(fs)
.