예제 #1
0
        /// <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);
                }
            }
        }
예제 #2
0
        /// <summary>
        /// ファイルを削除
        /// </summary>
        /// <param name="targetPath">削除するファイルのフルパス</param>
        /// <param name="useRecycleBox">削除時にゴミ箱に入れるか?</param>
        /// <returns>成功したらTrueを返す。ファイルが存在しない場合もTrueを返す</returns>
        public static bool DeleteFile(string targetPath,
                                      bool useRecycleBox = false)
        {
            if (String.IsNullOrEmpty(targetPath))
            {
                //null or Empty
                return(false);
            }

            try
            {
                if (File.ExistsFile(targetPath))
                {
                    if (useRecycleBox)
                    {
                        //ゴミ箱へ入れる
                        Microsoft.VisualBasic.FileIO.FileSystem.DeleteFile(
                            targetPath,
                            Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs,
                            Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin);
                    }
                    else
                    {
                        //直接削除
                        Microsoft.VisualBasic.FileIO.FileSystem.DeleteFile(
                            targetPath,
                            Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs,
                            Microsoft.VisualBasic.FileIO.RecycleOption.DeletePermanently);
                    }
                }
                return(true);
            }
            catch
            {
                //削除失敗
                return(false);
            }
        }