I/O Principiante

Confronta due file in modo efficiente senza caricarli in memoria.

✕ 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
Vedi un problema con questo codice? Faccelo sapere.

Efficiente in memoria

Non carica interi file in array di byte.

🎯

Individua la differenza

Restituisce la posizione esatta del primo byte diverso.

📏

Una chiamata

Nessuna logica di confronto array di byte manuale.

Approccio Vecchio
Confronto byte per byte manuale
Approccio Moderno
Files.mismatch()
Dal JDK
12
Difficoltà
Principiante
Files.mismatch()
Disponibile

Ampiamente disponibile dal JDK 12 (marzo 2019)

Files.mismatch() restituisce la posizione del primo byte che differisce, o -1 se i file sono identici. Legge in modo lazy e cortocircuita alla prima differenza.

Condividi 𝕏 🦋 in