Files.mismatch()
Compare deux fichiers efficacement sans les charger en mémoire.
Comparaison de Code
✕ 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
Un problème avec ce code ? Dites-le nous.
Pourquoi la méthode moderne gagne
Efficace en mémoire
Ne charge pas les fichiers entiers dans des tableaux d'octets.
Identifie la différence
Retourne la position exacte de l'octet de la première divergence.
Un seul appel
Sans logique manuelle de comparaison de tableaux d'octets.
Ancienne Approche
Comparaison manuelle d'octets
Approche Moderne
Files.mismatch()
Depuis JDK
12
Difficulté
Débutant
Support JDK
Files.mismatch()
Disponible
Disponible depuis JDK 12 (mars 2019)
Comment ça fonctionne
Files.mismatch() retourne la position du premier octet qui diffère, ou -1 si les fichiers sont identiques. Lit de façon paresseuse et court-circuite à la première différence.
Documentation Associée