现在,代码如下所示:
private void DatabaseIntegrityCheck()
{
try
{
string m_checksum;
using (FileStream stream = File.OpenRead(@"C:\~\db.mdf"))
{
SHA256Managed sha = new SHA256Managed();
byte[] checksum = sha.ComputeHash(stream);
m_checksum = BitConverter.ToString(checksum).Replace("-", String.Empty);
}
Console.WriteLine(m_checksum);
}
catch (Exception ex)
{
Console.WriteLine("unable to retrieve checksum");
}
}
当我在代码中设置断点以查看异常是什么时,我得到一个IOException:
进程无法访问文件'db.mdf',因为它正由另一个进程使用。
我运行校验和的方式是在我的窗口中有一个按钮,当我单击它时,将调用上面的方法来执行操作。我想检查并查看它是否先工作,所以我只是Console.WriteLine校验和哈希,但上面的异常被抛出。
我该怎么做才能解决这个问题?
答案 0 :(得分:-1)
请尝试以下代码:
try
{
string mChecksum;
using (FileStream stream = File.OpenRead(@"E:\draft.pdf"))
{
var sha = new SHA256Managed();
var cs = new CryptoStream(stream, sha, CryptoStreamMode.Read);
cs.FlushFinalBlock();
byte[] hash = sha.Hash;
mChecksum = BitConverter.ToString(hash).Replace("-", String.Empty);
}
Console.WriteLine(mChecksum);
}
catch (Exception ex)
{
Console.WriteLine("unable to retrieve checksum");
}
查看有关CryptoStream
的详细信息