1

阅读底部的更新

我已经为此苦苦思索了几个小时,似乎无法弄清楚这一点。

对于单元测试,我们将文件复制到临时位置并在其上运行 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/ 文件夹,因此可以在单元测试等中访问它......这就是出错的地方......我仍在努力寻找找出为什么这会失败。

4

2 回答 2

1

您几乎可以肯定没有正确复制它:例如,您正在使用 Readers 和 Writers,而您应该使用输入和输出流。

于 2013-09-23T09:35:16.967 回答
0

事实证明 Maven 资源插件配置错误。默认情况下,当过滤设置为 true 时,只有少数基本图像类型配置为“不过滤这些”。将 PDF 添加到此列表解决了该问题。

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <nonFilteredFileExtensions> <nonFilteredFileExtension>pdf</nonFilteredFileExtension> <nonFilteredFileExtension>jpg</nonFilteredFileExtension> <nonFilteredFileExtension>jpeg</nonFilteredFileExtension> <nonFilteredFileExtension>gif</nonFilteredFileExtension> <nonFilteredFileExtension>png</nonFilteredFileExtension> <nonFilteredFileExtension>tif</nonFilteredFileExtension> <nonFilteredFileExtension>tiff</nonFilteredFileExtension> <nonFilteredFileExtension>bmp</nonFilteredFileExtension> </nonFilteredFileExtensions> </configuration> </plugin>

于 2013-09-23T10:53:53.310 回答