XmlStreamWriter в zip-файл

Мне нужно создать ZIP-файл, содержащий несколько файлов XML. В настоящее время я записываю XML-файлы на диск и оттуда вызываю действие, записывающее файлы в нужный zip-файл.

Для записи файлов XML я использую XmlStreamWriter с FileOutputStream.

xmlStreamWriter = factory.createXMLStreamWriter(new FileOutputStream(file, false), StandardCharsets.UTF_8.name());

Пока это работает, но теперь я хочу удалить часть, где контент записывается на диск. Вместо этого это должно быть записано непосредственно в файл почтового индекса.

Код на данный момент у меня есть:

public class ZipUtil {


public static void doFolderZip(final String sourceFolder, final String zipFile) throws Exception {

    FileOutputStream fos = new FileOutputStream(zipFile);
    ZipOutputStream zos = new ZipOutputStream(fos);
    addDirToZipArchive(zos, new File(sourceFolder), null);
    zos.flush();
    fos.flush();
    zos.close();
    fos.close();
}

public static void addDirToZipArchive(ZipOutputStream zos, File fileToZip, String parentDirectory) throws
        Exception {
    String zipEntryName = fileToZip.getName();
    if (parentDirectory != null && !parentDirectory.isEmpty()) {
        zipEntryName = parentDirectory + "/" + fileToZip.getName();
    }

    if (fileToZip.isDirectory()) {
        for (File file : fileToZip.listFiles()) {
            addDirToZipArchive(zos, file, zipEntryName);
        }
    } else {
        byte[] buffer = new byte[1024];
        FileInputStream fis = new FileInputStream(fileToZip);
        zos.putNextEntry(new ZipEntry(zipEntryName));
        int length;
        while ((length = fis.read(buffer)) > 0) {
            zos.write(buffer, 0, length);
        }
        zos.closeEntry();
        fis.close();
    }
}

}

Я почему-то не могу понять, как добиться прямой записи в zip-файл из моего XmlStreamWriter.

Использование метода записи потокового писателя:

protected void writeElement(String attrName, final String value, final XMLStreamWriter xmlStreamWriter) throws
        XMLStreamException {

    xmlStreamWriter.writeStartElement("tag");
    xmlStreamWriter.writeAttribute("name", attrName);
    xmlStreamWriter.writeStartElement("value");
    xmlStreamWriter.writeCharacters(value);
    xmlStreamWriter.writeEndElement();
    xmlStreamWriter.writeEndElement();
}

Любая помощь о том, как это сделать, приветствуется.

0 ответов

Другие вопросы по тегам