org.apache.commons.io.FileUtils.copyFile(File、File)がわずかに異なるファイルを生成している問題があります。私がこれらのファイルをbsdiffやエディタと比較すると、それらが異なっているとわかります。特定のバイトが疑問符としてコピーされています。たとえば、0200(8進数)は? (077オクタル)。バイナリファイルは異なりますが、JVMとは異なりますか?
したがって、バグレポートに含めるテストケースを作成します。実行可能ファイルのコピーを作成し、FileUtils.checksumCRC32(File)を使用して比較します。予期せず、ファイルには同じチェックサムがあります。次に、各ファイルのFileInputStreamを反復して比較します。これはまた、ファイルが同じであることを主張します。
ファイルは確かに異なります。 1つは実行され、もう1つは実行されません。 bsdiffは、2つのファイルのdiffを生成します。私は、特定のバイトが私の目でファイルを検査することによって間違ってコピーされていることを知ることができます。
ただし、JVMではこれらのファイルは同じです。なぜ私はこの行動を観察しているのすべてのアイデア?
システム情報: Windows 7,64ビット; JVM 1.6.0_22,32ビット
あなたが思っているファイルをコピーしていないようです。ファイルがテキストファイルとしてコピーされ、バイナリコピーが別の場所にコピーされているようです。 –
また、ファイル上でmd5sum.exeを実行すると、あなたのツール(エディタ、bsdiff)がバイナリに1つのファイルを混乱させるかもしれないし、テキストファイル(例えば、ファイルの終了やファイルに添付されたメタデータに基づく)を混乱させるかもしれません。 – nos