org.apache.commons.io.FileUtils.copyFile(File、File)がわずかに異なるファイルを生成するという問題があります。これらのファイルをbsdiffまたはエディターで比較すると、それらが異なっていることがわかります。特定のバイトが疑問符としてコピーされています。たとえば、0200(8進数)は?としてコピーされています。(077 8進数)。
そこで、バグレポートに含めるテストケースを作成します。実行可能ファイルのコピーを作成し、FileUtils.checksumCRC32(File)を使用して比較します。予期せぬことに、ファイルのチェックサムは同じです。次に、各ファイルのFileInputStreamを反復処理して、それらを比較します。これは、ファイルが同じであることも示しています。
ファイルは確かに異なります。1つは実行され、もう1つは実行されません。bsdiffは、2つのファイルの差分を生成します。ファイルを目で調べると、特定のバイトが間違ってコピーされていることがわかります。
ただし、JVMにとって、これらのファイルは同じです。私がこの行動を観察している理由について何か考えはありますか?
システム情報:Windows 7、64ビット; JVM 1.6.0_22、32ビット