Files.mismatch()
Compara dos archivos de forma eficiente sin cargarlos en memoria.
Comparación de Código
✕ 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
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
Eficiente en memoria
No carga archivos completos en arrays de bytes.
Identifica la diferencia
Devuelve la posición exacta del byte de la primera discrepancia.
Una sola llamada
Sin lógica manual de comparación de arrays de bytes.
Enfoque Antiguo
Comparación manual de bytes
Enfoque Moderno
Files.mismatch()
Desde JDK
12
Dificultad
Principiante
Soporte JDK
Files.mismatch()
Disponible
Ampliamente disponible desde JDK 12 (marzo de 2019)
Cómo funciona
Files.mismatch() devuelve la posición del primer byte que difiere, o -1 si los archivos son idénticos. Lee de forma perezosa y cortocircuita en la primera diferencia.
Documentación Relacionada