如何使用JAXB将XML文件列表直接写入zip归档文件而不使用第三方库?
是将所有XML文件直接写入目录,然后压缩更好呢?
正如其他人指出的那样,您可以使用ZipOutputStream
类来创建ZIP文件。将多个文件放入单个ZIP文件的技巧是在写入(编组)JAXB XML数据到ZipOutputStream
之前使用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();
}
}
java.util.zip.ZipOutputStream
。TrueZIP 是一个基于 Java 的插件框架,用于虚拟文件系统(VFS),它提供了透明访问存档文件的功能,就像它们只是普通目录一样。
ZipOututStream
是JDK的一部分(即它不是“库”)。