/// <summary> /// ファイルの内容をMD5ハッシュ値で比較する /// </summary> /// <param name="targetPath1"></param> /// <param name="targetPath2"></param> /// <param name="errorRetryCount">エラー時のリトライ回数</param> /// <returns>同じ場合はTrueを返す</returns> private static bool IsSameFile(string targetPath1, string targetPath2, int errorRetryCount) { try { //File.OpenReadではロック中のファイルを開くとエラーになる //そのため、 FileStream でオプションを指定して開く if (File.ExistsFile(targetPath1) && File.ExistsFile(targetPath2)) { var md5 = System.Security.Cryptography.MD5.Create(); string file1md5 = File.GetFileMd5HashValue(targetPath1); string file2md5 = File.GetFileMd5HashValue(targetPath2); if (file1md5.Equals(file2md5)) { //同じ内容 return(true); } else { //違う内容 return(false); } } else { //どちらかのファイルが存在しない。 return(false); } } catch { //エラー if (errorRetryCount <= 0) { //1回はリトライする System.Threading.Thread.Sleep(3000); //数秒待つ return(File.IsSameFile(targetPath1, targetPath2, errorRetryCount + 1)); } else { return(false); } } }
/// <summary> /// ファイルの内容をMD5ハッシュ値で比較する /// </summary> /// <param name="targetPath1"></param> /// <param name="targetPath2"></param> /// <returns>同じ場合はTrueを返す</returns> public static bool IsSameFile(string targetPath1, string targetPath2) { return(File.IsSameFile(targetPath1, targetPath2, 0)); }