我遇到了 org.apache.commons.io.FileUtils.copyFile(File, File) 生成的文件略有不同的问题。当我将这些文件与 bsdiff 或在编辑器中进行比较时,我可以看出它们是不同的。某些字节被复制为问号。例如 0200(八进制)被复制为?(八进制 077)。
因此,我创建了一个测试用例以包含在错误报告中。我制作了可执行文件的副本,然后使用 FileUtils.checksumCRC32(File) 进行比较。出乎意料的是,这些文件具有相同的校验和。然后我通过遍历每个文件的 FileInputStream 来比较它们。这也断言文件是相同的。
文件肯定不同。一个运行,另一个不运行。bsdiff 产生两个文件的差异。我可以通过我的眼睛检查文件来判断某些字节被错误地复制了。
但是,对于 JVM,这些文件是相同的。关于我为什么要观察这种行为的任何想法?
系统信息:Windows 7、64 位;JVM 1.6.0_22,32 位