我正在尝试读取字节数组中的两个docx文件,并尝试使用FileOutputStream
将其写入一个docx文档中。以下是我在groovy和grails中使用的代码片段。
byte[] firstFile = Files.readAllBytes(Paths.get("D:/MyDoc/firstFile.docx"));
byte[] secFile = Files.readAllBytes(Paths.get("D:/MyDoc/secFile.docx"));
FileOutputStream f = new FileOutputStream(new File("D:/MyDoc/mergedFile.docx"));
f.write(firstFile);
f.write(secFile);
f.close();
问题是文件大小增加了,但合并文件中的内容仅来自第一个文件。相同的代码适用于txt文件,但不适用于docx文件。
我认为这应该是一些显示/格式化问题,这就是为什么它没有显示第二个文件的内容。
一些小例子:
文件1.docx
<HEADER>
FILE_SIZE=3
<BODY>
1
2
3
文件2.docx
<HEADER>
FILE_SIZE=2
<BODY>
1
2
如果你把两者结合起来,你会得到:
<HEADER>
FILE_SIZE=3
<BODY>
1
2
3
<HEADER>
FILE_SIZE=2
<BODY>
1
2
但是Word将从顶部开始解释此文件。在读取标题和文件只有3行长的信息后,它将在第一个文档之后停止
这个例子当然非常简单!!!
如果你真的想使用java中的docx文件,你应该使用一个理解单词格式并适当处理它的库。像DOCX4J或Apache POI