I/O Başlangıç

İki dosyayı belleğe yüklemeden verimli biçimde karşılaştırın.

✕ 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
Bu kodda bir sorun mu gördünüz? Bize bildirin.

Bellek verimli

Dosyaların tamamını bayt dizilerine yüklemez.

🎯

Farkı tam olarak bulur

İlk uyumsuzluğun tam bayt konumunu döndürür.

📏

Tek çağrı

Manuel bayt dizisi karşılaştırma mantığına gerek yoktur.

Eski Yaklaşım
Manuel Bayt Karşılaştırma
Modern Yaklaşım
Files.mismatch()
JDK'dan itibaren
12
Zorluk
Başlangıç
Files.mismatch()
Mevcut

JDK 12'den itibaren geniş çapta kullanılabilir (Mart 2019)

Files.mismatch(), farklılık gösteren ilk baytın konumunu döndürür veya dosyalar özdeşse -1 döndürür. Tembel okur ve ilk farklılıkta kısa devre yapar.

Paylaş 𝕏 🦋 in