0 امتیاز

سلام

با کد زیر دو تا فایل رو با هم مقایسه می کنم 

        public static bool CompareFile(string file1, string file2)
        {
            var file1Bytes = System.IO.File.ReadAllBytes(file1);
            var file2Bytes = System.IO.File.ReadAllBytes(file2);
            var md5Hasher = System.Security.Cryptography.MD5.Create();
            var file1Hash = System.Convert.ToBase64String(md5Hasher.ComputeHash(file1Bytes));
            var file2Hash = System.Convert.ToBase64String(md5Hasher.ComputeHash(file2Bytes));
            return file1Hash == file2Hash;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            var isEqual = CompareFile("d:\\t.omg", "d:\\p.omg");
            if(isEqual==false)
            {
                textBox1.Text = " هر دو فایل یکسان هستند";
            }
            else
            {
                textBox1.Text = " هر دو فایل یکسان نیستند";
            }

حالا میخوام که فایلهای دو پوشه با زیرپوشه هاشون رو با هم مقایسه کنم به صورت فایل به فایل ، اگر فایلی از پوشه اول در پوشه دوم وجود نداشت و یا اینکه متفاوت با فایل پوشه اول بود از پوشه اول به پوشه دوم کپی بشه

1 پاسخ

+1 امتیاز

سلام

class Program
{
    class FileCompare : System.Collections.Generic.IEqualityComparer<System.IO.FileInfo>
    {
        public bool Equals(System.IO.FileInfo f1, System.IO.FileInfo f2)
        {
            return (f1.Name == f2.Name);
        }
        public int GetHashCode(System.IO.FileInfo fi)
        {
            string s = fi.Name;
            return s.GetHashCode();
        }
    }

    static void Main(string[] args)
    {
        string sourcePath = @"C:\Users\Administrator\Desktop\Source";
        string destinationPath = @"C:\Users\Administrator\Desktop\Dest";

        System.IO.DirectoryInfo dir1 = new System.IO.DirectoryInfo(sourcePath);
        System.IO.DirectoryInfo dir2 = new System.IO.DirectoryInfo(destinationPath);

        IEnumerable<System.IO.FileInfo> list1 = dir1.GetFiles("*.*",
        System.IO.SearchOption.AllDirectories);

        IEnumerable<System.IO.FileInfo> list2 = dir2.GetFiles("*.*",
        System.IO.SearchOption.AllDirectories);

        bool IsInDestination = false;
        bool IsInSource = false;

        foreach (System.IO.FileInfo s in list1)
        {
            IsInDestination = true;

            foreach (System.IO.FileInfo s2 in list2)
            {
                if (s.Name == s2.Name)
                {
                    IsInDestination = true;
                    break;
                }
                else
                {
                    IsInDestination = false;
                }
            }

            if (!IsInDestination)
            {
                System.IO.File.Copy(s.FullName, System.IO.Path.Combine(destinationPath, s.Name), true);
            }
        }

        list1 = dir1.GetFiles("*.*", System.IO.SearchOption.AllDirectories);

        list2 = dir2.GetFiles("*.*", System.IO.SearchOption.AllDirectories);

        bool areIdentical = list1.SequenceEqual(list2, new FileCompare());

        if (!areIdentical)
        {
            foreach (System.IO.FileInfo s in list2)
            {
                IsInSource = true;

                foreach (System.IO.FileInfo s2 in list1)
                {
                    if (s.Name == s2.Name)
                    {
                        IsInSource = true;
                        break;
                    }
                    else
                    {
                        IsInSource = false;
                    }
                }

                if (!IsInSource)
                {
                    System.IO.File.Copy(s.FullName, System.IO.Path.Combine(sourcePath, s.Name), true);
                }
            }
        }

        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,924 کاربر

دسته بندی ها

...