I/O مبتدئ

قارن ملفين بكفاءة دون تحميلهما في الذاكرة.

✕ 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
الصعوبة
مبتدئ
Files.mismatch()
متاح

متاح على نطاق واسع منذ JDK 12 (مارس 2019)

تُرجع Files.mismatch() موضع أول بايت مختلف أو -1 إذا كان الملفان متطابقَين. تقرأ بكسل وتتوقف عند أول اختلاف.

مشاركة 𝕏 🦋 in