org.apache.commons.io.FileUtils.copyFile (File, File)이 약간 다른 파일을 생성하는 문제가 있습니다. 이 파일들을 bsdiff 나 편집기에서 비교할 때, 나는 그것들이 다르다고 말할 수 있습니다. 특정 바이트가 물음표로 복사됩니다. 예를 들어, 0200 (8 진수)이? (077 8 진수).바이너리 파일은 JVM과 다르지만 다를 수 있습니까?
따라서 버그 보고서에 포함 할 테스트 사례를 만듭니다. 실행 파일의 복사본을 만든 다음 FileUtils.checksumCRC32 (File)를 사용하여 비교합니다. 예기치 않게 파일의 체크섬이 동일합니다. 그런 다음 각 파일의 FileInputStream을 반복하여 비교합니다. 이것은 또한 파일이 동일하다는 것을 주장합니다.
파일이 확실히 다릅니다. 하나는 실행되고 다른 하나는 실행되지 않습니다. bsdiff는 두 파일의 diff를 생성합니다. 내 눈으로 파일을 검사하여 특정 바이트가 잘못 복사되고 있음을 알 수 있습니다.
그러나 JVM의 경우 이러한 파일은 동일합니다. 왜 내가이 행동을 관찰하고 있는지에 대한 아이디어가 있습니까?
시스템 정보 : Windows 7, 64 비트; JVM 1.6.0_22, 32 비트
당신이 생각하는 파일을 복사하지 않는 것처럼 들립니다. 파일이 텍스트 파일로 복사되고 이진 사본이 다른 곳으로 이동하는 것 같습니다. –
또한 파일에서 md5sum.exe를 실행하십시오. 도구 (편집기, bsdiff)는 1 파일을 바이너리로, 다른 파일을 텍스트 파일로 혼동 할 수 있습니다 (예 : 파일 결말 또는 파일에 첨부 된 메타 데이터). – nos