特定のファイルのMD5およびSHA1チェックサムを計算するメソッドの実行中に問題が発生しました。私の方法は次のようになります。
SHA1を:MD5およびSHA1チェックサムの計算中にIOExceptionが発生する
public string HashFile(string toHash)
{
SHA1 SHA1ENGINE = SHA1.Create();
byte[] hashBytes = SHA1ENGINE.ComputeHash(File.Open(toHash, FileMode.Open, FileAccess.Read));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
sb.Append(hashBytes[i].ToString("X2"));
}
return sb.ToString();
}
MD5:プロセスはファイルにアクセスできません「(:
public string HashFile(string toHash)
{
MD5 MD5ENGINE = MD5.Create();
byte[] hashBytes = MD5ENGINE.ComputeHash(File.Open(toHash, FileMode.Open, FileAccess.Read));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
sb.Append(hashBytes[i].ToString("X2"));
}
return sb.ToString();
}
これらのいずれかの方法を実行している間、私はIOExceptionが取得PATHTOFILE) 'は別のプロセスで使用されているためです。
これは永続的な問題です。私のPC上のファイルのチェックサムは計算できません。私はローカル管理者としてログオンしており、VSは管理者として開かれています。これは、たとえばC:\ TEMP、C:\ Users \ Administrator \ Desktopなど、私が試したどのディレクトリでも永続的です。実際にファイルをロックするプロセスが存在する可能性があるので、私はまた、私のPCを再起動しようとしましたが、それは助けにはなりませんでした。
最初は私が使用することを試みた:
byte[] hashBytes = SHA1ENGINE.ComputeHash(File.OpenRead(toHash));
をしかし、記載されている問題といくつかの調査に遭遇した後、私はそれに変更しました:
byte[] hashBytes = SHA1ENGINE.ComputeHash(File.Open(toHash, FileMode.Open, FileAccess.Read));
これも助けにはなりませんでした。
'File.Open()'は、削除すべきものを返します。 – CodeCaster
file.openでusingステートメントを使用する必要があります。https://msdn.microsoft.com/en-us/library/b9skfh7s(v=vs.110).aspx – JOSEFtw