Files.mismatch()
Confronta due file in modo efficiente senza caricarli in memoria.
Confronto Codice
✕ 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.
Perché vince l'approccio moderno
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
Supporto JDK
Files.mismatch()
Disponibile
Ampiamente disponibile dal JDK 12 (marzo 2019)
Come funziona
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.
Documentazione Correlata