如何直接将XML文件写入zip压缩文件?
答
正如其他人指出的那样,您可以使用ZipOutputStream
类创建ZIP文件。将多个文件放在一个ZIP文件中的技巧是在编写(编组)ZipOutputStream
中的JAXB XML数据之前使用ZipEntry
描述符。因此,您的代码可能看起来与此类似:
JAXBElement jaxbElement1 = objectFactory.createRoot(rootType);
JAXBElement jaxbElement2 = objectFactory.createRoot(rootType);
ZipOutputStream zos = null;
try {
zos = new ZipOutputStream(new FileOutputStream("xml-file.zip"));
// add zip-entry descriptor
ZipEntry ze1 = new ZipEntry("xml-file-1.xml");
zos.putNextEntry(ze1);
// add zip-entry data
marshaller.marshal(jaxbElement1, zos);
ZipEntry ze2 = new ZipEntry("xml-file-2.xml");
zos.putNextEntry(ze2);
marshaller.marshal(jaxbElement2, zos);
zos.flush();
} finally {
if (zos != null) {
zos.close();
}
}
答
我不知道JAXB和任何东西有什么关系,XML文件内容也不是文件内容。你的问题真的是“我怎样才能直接输出字符到一个zip档案”
要做到这一点,打开ZipOututStream并使用API创建条目,然后写入内容到每个条目。请记住,zip存档就像存档中的一系列命名文件。
顺便说一句,ZipOututStream
是JDK的一部分(即它不是一个“库”)
答
,而无需使用第三方库—是使用java.util.zip.ZipOutputStream
的“正确”的方式—。
个人而言,我更喜欢TrueZip。
TrueZIP是一个基于Java的虚拟文件系统(VFS)插件框架,它提供对存档文件的透明访问,就像它们只是普通目录一样。
+0
+1相同的答案+ TrueZip提示:) – Bohemian
为什么要使用JAXB编写XML文件?你为什么不直接将它复制到压缩文件中 –
压缩文件更多的是压缩一切而不是压缩它。虽然它的真正处理文件的编辑器需要一个解决方案,它允许我在编辑器之外更改文件以进行快速更改。 – kdgwill