Beispiel #1
0
        void CmpareFunc()
        {
            var path1 = this.textBox1.Text;
            var path2 = this.textBox2.Text;
            var path3 = this.textBox3.Text;
            var isDir = Directory.Exists(path1) && Directory.Exists(path2) && Directory.Exists(path3);

            if (!isDir)
            {
                MessageBox.Show("错误的目录!");
                return;
            }
            var dirName = Path.GetFileName(path2);
            var path    = path3 + "//" + dirName;

            if (Directory.Exists(path))
            {
                if (MessageBox.Show("存储位置存在相同名称的目录 " + dirName + ", 要覆盖吗?", "警告", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
                {
                    return;
                }
                else
                {
                    CompareUtil.DeleteDir(path);
                    Directory.CreateDirectory(path);
                }
            }

            CompareUtil.CompareDirectory(path1, path2, path);
            this.SetText("结束");
        }
Beispiel #2
0
        public static void CompareDirectory(string oldDir, string newDir, string destDir)
        {
            destDir += "\\";
            var dirs = Directory.GetDirectories(newDir);

            foreach (var dir in dirs)
            {
                var dirName = Path.GetFileName(dir);
                if (!IsValidDir(dirName))
                {
                    continue;
                }
                var path1 = oldDir + "//" + dirName;
                var path2 = destDir + dirName;
                if (!Directory.Exists(path1))
                {
                    CompareUtil.CopyDirectory(dir, path2);
                }
                else
                {
                    EventDispatcher.DispatchEvent(1001, dir);
                    Thread.Sleep(10);
                    CompareUtil.CompareDirectory(path1, dir, path2);
                }
            }

            var files = Directory.GetFiles(newDir);

            foreach (var file in files)
            {
                var fileName = Path.GetFileName(file);
                var path1    = oldDir + "//" + fileName;
                var flag     = false;
                if (!File.Exists(path1))
                {
                    flag = true;
                }
                else
                {
                    var hash1 = Md5HashUtil.GetMD5HashFromFile(file);
                    var hash2 = Md5HashUtil.GetMD5HashFromFile(path1);
                    if (hash1 != hash2)
                    {
                        flag = true;
                    }
                }

                if (flag)
                {
                    if (Directory.Exists(destDir) == false)
                    {
                        Directory.CreateDirectory(destDir);
                    }
                    FileInfo flinfo = new FileInfo(file);
                    flinfo.CopyTo(destDir + flinfo.Name, true);
                    EventDispatcher.DispatchEvent(1001, destDir + flinfo.Name);
                    Thread.Sleep(10);
                }
            }
        }