I/O Początkujący

Porównuj dwa pliki wydajnie bez ładowania ich do pamięci.

✕ 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
Widzisz problem z tym kodem? Daj nam znać.

Efektywność pamięciowa

Nie ładuje całych plików do tablic bajtów.

🎯

Wskazuje różnicę

Zwraca dokładną pozycję bajtu pierwszej niezgodności.

📏

Jedno wywołanie

Bez ręcznej logiki porównywania tablic bajtów.

Stare podejście
Ręczne porównywanie bajtów
Nowoczesne podejście
Files.mismatch()
Od JDK
12
Poziom trudności
Początkujący
Files.mismatch()
Dostępne

Szeroko dostępne od JDK 12 (marzec 2019)

Files.mismatch() zwraca pozycję pierwszego bajtu, który się różni, lub -1 jeśli pliki są identyczne. Odczytuje leniwie i przerywa przy pierwszej różnicy.