阅读底部的更新
我已经为此苦苦思索了几个小时,似乎无法弄清楚这一点。
对于单元测试,我们将文件复制到临时位置并在其上运行 soms 场景。这个文件副本做了非常奇怪的事情。这只发生在 PDF 文件中,图像不受影响。我尝试了几种不同的复制/收集文件大小的方法,并且都做同样的事情。
- file.length() 与 windows 列表不一致。java 认为文件更大(大约多 25% 字节)
- 当文件/字节被读取/复制/等时,它们最终会得到 JAVA 报告的字节数。(太多)
- Intellij 将输入和输出文件报告为相同。(可能是由于 intellij 使用 java 作为其差异)
- 当我打开两个文件记事本++时,有一些差异。所有基于文本的信息(它是 pdf)都是相同的。包裹在“流”标签中的数据是不同的!
原本的:
xÚ¥'=OÃ@†÷ü</p>
新文件:
xڥ�=O�@���
这使我怀疑编码问题或类似问题...
但...
- 为什么这会发生在每个字节的副本上?
- 为什么在使用简单的 file.length() 时会发生这种情况?
有没有人遇到过这样的事情或知道我应该朝哪个方向搜索?
根据要求:这是用于复制文件的代码:
assetFile = TempFileUtil.createTempFile(transformationId + "_" + inputFile.getName());
FileUtils.copyFile(inputFile, assetFile);
createTempFile 方法是:
public static File createTempFile(final String filename) {
return new File(baseOutputPath, filename);
}
更新
我发现错误不在于复制,而在于单元测试中处理资源的方式。/src/resources/ 文件夹内容被移动/链接/复制到 targer/test-classes/ 文件夹,因此可以在单元测试等中访问它......这就是出错的地方......我仍在努力寻找找出为什么这会失败。