我正在尝试用Java语言读取字节数组中的.doc或.docx文件。我不期待使用任何第三方APis,如Apache POI,TIKA,doc4j等。最简单的代码是:
代码语言:javascript复制Path file_path = Paths.get("D:\\", "myname3.doc");
byte[] ByteArray= Files.readAllBytes(file_path);
for(byte b : ByteArray){
System.out.print(b);
}代码工作正常,我收到了字节数组。然而,当我在MS Word中再次打开相同的文件时,没有做任何更改,但再次将其保存在具有相同内容的相同驱动器中时,我收到的字节数组完全不同。我知道与修改时间相关的MetaData存在差异,但字节数组是完全不同的,就好像文件的整个内容都被更改了一样。(附加包含两次迭代的字节数组的文本文件)。Difference in Byte Array
有没有不使用第三方API的解决方案?
注意:-我已经看过了微软网站上给出的Word编码格式,也研究了字符顺序问题,以防万一。我也尝试过通过FileInputStreamReader读取文件。
注意:-这个程序可以很好地处理ASCII格式的文本文件。
编辑1:-只是为了让问题变得清晰。当我用上面的程序读取在不同名称的同一位置保存了两次的.docx文件时,字节数组完全不同。我想知道这背后的原因。
编辑2:-我试着在OffVis工具中读取文件,那里的原始字节也不同。