• 0

ما هي أفضل طريقة لمقارنة ملف كبير الحجم مع آخر دون استهلاك الرام وحدوث مشاكل [C#]؟

ما أفضل طريقة للتعامل مع BigData او مقارنة ملف كبير مساحته تقريبا 60MB مع ملف اخر دون استغلال الرام وحدوث مشاكل Run-time. حيث لدي أكثر من 100ملف مع العلم أنّ الملفات مشفرة ولا تحتمل التجزئة؟
يمكن وضع الأمثلة بلغة C#

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

يمكنك ذلك عن طريق عدم تحميل الملفين للذاكرة عند المقارنة. نفتح الملفين معًا ونقرأ بايت تلو الآخر من كل منهما ونقارن بينهما. إليك الشيفرة التالية باستخدام سي شارب التي توضّح هذه الفكرة:

        bool Compare(string filePath1, string filePath2)
        {
            using (FileStream file1 = File.OpenRead(filePath1))
            {
                using (FileStream file2 = File.OpenRead(filePath2))
                {
                    if (file1.Length != file2.Length)
                    {
                        return false;
                    }

                    int count1 = -1, count2 = -1;

                    while (count1 != -1 && count2 != -1)
                    {
                        count1 = file1.ReadByte();
                        count2 = file2.ReadByte();

                        if (count1 != count2)
                        {
                            return false;
                        }
                    }
                }
            }

            return true;
        }

ستحتاج إلى استخدام نطاق الاسم System.IO لكي يعمل التابع Compare السابق بشكل صحيح. تقارن هذه الشيفرة بين ملفين على مستوى البايت، وعند حدوث أي اختلاف تُرجع false. وإلّا فإنّها تُرجع true إذا كان التطابق تامًّا. ستحتاج إلى تمرير مساري الملفين المراد مقارنتهما كمتغيرين إلى هذا التابع عند استدعائه.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن