我需要将 java 文件(实际上是 .pdf)解析为字符串并返回到文件。在这些过程之间,我将对给定的字符串应用一些补丁,但这在本例中并不重要。
我开发了以下 JUnit 测试用例:
String f1String=FileUtils.readFileToString(f1);
File temp=File.createTempFile("deleteme", "deleteme");
FileUtils.writeStringToFile(temp, f1String);
assertTrue(FileUtils.contentEquals(f1, temp));
此测试将文件转换为字符串并将其写回。然而测试失败了。
我认为这可能是因为编码的原因,但在 FileUtils 中没有关于此的详细信息。
有人可以帮忙吗?
谢谢!
为了进一步理解而添加:
为什么我需要这个?
我在一台机器上有非常大的pdf文件,它们被复制到另一台机器上。第一个负责创建这些 pdf。由于第二台机器的连接性较低且pdf文件较大,我不想同步整个pdf文件,而只想同步所做的更改。
为了创建补丁/应用它们,我使用谷歌库 DiffMatchPatch。该库在两个字符串之间创建补丁。所以我需要将 pdf 加载到字符串中,应用生成的补丁,然后将其放回文件中。
PDF 不是文本文件。对非编码文本的二进制文件进行解码(转换为 Java 字符)和重新编码是不对称的。例如,如果输入字节流对于当前编码无效,您可以放心它不会正确地重新编码。简而言之 - 不要这样做。使用readFileToByteArray 和 writeByteArrayToFile http://commons.apache.org/io/apidocs/org/apache/commons/io/FileUtils.html反而。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)