اذهب إلى المحتوى

السؤال

نشر

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

Recommended Posts

  • 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 إذا كان التطابق تامًّا. ستحتاج إلى تمرير مساري الملفين المراد مقارنتهما كمتغيرين إلى هذا التابع عند استدعائه.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...