I/O Iniciante

Compare dois arquivos de forma eficiente sem carregá-los na memória.

✕ 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
Viu um problema com este código? Nos avise.

Eficiente em memória

Não carrega arquivos inteiros em arrays de bytes.

🎯

Localiza a diferença

Retorna a posição exata do byte da primeira divergência.

📏

Uma chamada

Sem lógica manual de comparação de arrays de bytes.

Abordagem Antiga
Comparação manual de bytes
Abordagem Moderna
Files.mismatch()
Desde o JDK
12
Dificuldade
Iniciante
Files.mismatch()
Disponível

Amplamente disponível desde o JDK 12 (março de 2019)

Files.mismatch() retorna a posição do primeiro byte que difere, ou -1 se os arquivos são idênticos. A leitura é feita de forma lazy e interrompe na primeira diferença encontrada.

Compartilhar 𝕏 🦋 in