gpt4 book ai didi

java - 为什么每次在 MS Word 中再次保存文件时,Java 中的 .doc 或 .docx 文件的字节数组都会发生变化?

转载 作者:行者123 更新时间:2023-12-01 09:48:08 24 4
gpt4 key购买 nike

我正在尝试用 Java 读取字节数组中的 .doc 或 .docx 文件。我不希望使用任何第三方 API,如 Apache POI、TIKA、doc4j 等。最简单的代码是:-

Path file_path = Paths.get("D:\\", "myname3.doc");
byte[] ByteArray= Files.readAllBytes(file_path);
for(byte b : ByteArray){
System.out.print(b);
}

代码工作正常,我收到了字节数组。但是,当我在 MS Word 中再次打开同一个文件,不进行任何更改,而是以相同的内容再次将其保存在同一驱动器中时,我收到的字节数组完全不同。我知道与修改时间有关的元数据存在差异,但字节数组完全不同,就好像文件的整个内容已更改一样。 (附加包含两次迭代的字节数组的文本文件)。 Difference in Byte Array

是否有不使用第三方 API 的解决方案?

注意:- 我已经浏览了 MS 网站上给出的 Word 编码格式,并且还查看了字节顺序问题,以防万一。还尝试通过 FileInputStreamReader 读取文件。

注意:- 该程序对于 ASCII 格式的文本文件运行良好。

编辑1:-只是为了让问题变得清晰。当我读取在同一位置以不同名称保存两次的 .docx 文件时,当我使用上面的程序读取该文件时,字节数组完全不同。我想知道这背后的原因。

编辑2:-我尝试在OffVis工具中读取文件,原始字节也不同。

最佳答案

这绝对可以用 .docx 来解释,它只是一个 zipped, XML-based file format 。由于它是一个压缩文件,因此底层文件之一的轻微更改可能会在全局范围内彻底改变存档文件的位。

不知道为什么文档会发生这种情况。

关于java - 为什么每次在 MS Word 中再次保存文件时,Java 中的 .doc 或 .docx 文件的字节数组都会发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37816882/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com