Files.mismatch()
قارن ملفين بكفاءة دون تحميلهما في الذاكرة.
مقارنة الكود
✕ Java 8
// Compare two files byte by byte byte[] f1 = Files.readAllBytes(path1); byte[] f2 = Files.readAllBytes(path2); boolean equal = Arrays.equals(f1, f2); // loads both files entirely into memory
✓ Java 12+
long pos = Files.mismatch(path1, path2); // -1 if identical // otherwise: position of first difference
هل ترى مشكلة في هذا الكود؟ أخبرنا.
لماذا يتفوق الأسلوب الحديث
كفوءة في الذاكرة
لا تُحمّل الملفات كاملةً في مصفوفات بايت.
تُحدّد الاختلاف
تُرجع الموضع الدقيق لأول عدم تطابق.
استدعاء واحد
لا منطق مقارنة مصفوفات بايت يدوي.
الأسلوب القديم
مقارنة بايتات يدوية
الأسلوب الحديث
Files.mismatch()
منذ JDK
12
الصعوبة
مبتدئ
دعم JDK
Files.mismatch()
متاح
متاح على نطاق واسع منذ JDK 12 (مارس 2019)
كيف يعمل
تُرجع Files.mismatch() موضع أول بايت مختلف أو -1 إذا كان الملفان متطابقَين. تقرأ بكسل وتتوقف عند أول اختلاف.
توثيق ذو صلة