Files.mismatch()
İki dosyayı belleğe yüklemeden verimli biçimde karşılaştırın.
Kod Karşılaştırması
✕ 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.
Modern yöntem neden daha iyi
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ıç
JDK Desteği
Files.mismatch()
Mevcut
JDK 12'den itibaren geniş çapta kullanılabilir (Mart 2019)
Nasıl çalışır
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.
İlgili Belgeler