I/O 초급

파일을 메모리에 로드하지 않고 효율적으로 두 파일을 비교합니다.

✕ 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
이 코드에 문제가 있나요? 알려주세요.

메모리 효율적

전체 파일을 바이트 배열에 로드하지 않습니다.

🎯

차이 지점 정확

첫 번째 불일치의 정확한 바이트 위치를 반환합니다.

📏

한 번의 호출

수동 바이트 배열 비교 로직이 필요 없습니다.

이전 방식
수동 바이트 비교
모던 방식
Files.mismatch()
JDK 버전
12
난이도
초급
Files.mismatch()
사용 가능

JDK 12 (2019년 3월) 이후 널리 사용 가능

Files.mismatch()는 첫 번째로 다른 바이트의 위치를 반환하거나, 파일이 동일하면 -1을 반환합니다. 지연 방식으로 읽고 첫 번째 차이에서 단락 평가합니다.

공유 𝕏 🦋 in