File.length()与windows不同,文件内容仍然相等?

时间:2013-09-23 09:21:34

标签: java file-io junit size java-io

阅读底部的更新

我一直在摸不着头几个小时,似乎无法解决这个问题。

对于单元测试,我们将文件复制到临时位置并在其上运行soms方案。这个文件副本做了非常奇怪的事情。这仅发生在PDF文件中,图像不受影响。我尝试过几种不同的方式来复制/收集文件大小,并且都做同样的事情。

  • file.length()与windows列表不一致。 java认为文件较大(大约多25%的字节)
  • 当读取/复制文件/字节/等时,它们最终会得到JAVA报告的字节数。 (太多了)
  • Intellij报告输入和输出文件相同。 (可能是由于intellij使用java作为其差异)
  • 当我打开两个文件notepad ++时,会有一些差异。所有基于文本的信息(它是pdf)都是相同的。包含在'stream'标签中的数据不同!

原文:

许¥“= OA @†÷ü

新文件:

许¥ï¿½=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 /文件夹,因此可以在单元测试等中访问...这就是出错的地方...... 我还在试图找出失败的原因。

2 个答案:

答案 0 :(得分:1)

您几乎肯定不会正确复制它:例如,您正在使用读者和作家,您应该使用输入和输出流。

答案 1 :(得分: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>