Я пытаюсь использовать StaX API для создания некоторого XML, сохранить его в FileOutputStream и поместить этот поток в GZIPOutPutStream.
Очевидно, что я делаю что-то не так, потому что следующий код выводит поврежденный файл: hellow.xml.gz. Я могу открыть zip-файл и увидеть внутри xml-файл. Однако при извлечении я получаю сообщение об ошибке, говорящее о том, что файл поврежден.
Код работает только с файлом, если я вывожу в текстовый файл, а не пытаюсь заархивировать файл с помощью GZIPOutPutStream. Как заставить xml правильно писать и сжимать в gzip?
public class Main {
public static void main(String[] args) throws XMLStreamException, IOException {
FileOutputStream outputStream = new FileOutputStream(new File("/home/user/hellow.xml.gz"));
GZIPOutputStream outputStreamZip = new GZIPOutputStream(outputStream);
XMLOutputFactory factory = XMLOutputFactory.newInstance();
XMLStreamWriter writer = factory.createXMLStreamWriter(outputStreamZip, "UTF-8");
writer.writeStartElement("WOOOOOOOOOOOOOOOOOOOOOOOOOOOOT");
writer.writeStartElement("Lookup_Value_Record");
writer.writeCharacters("Hello World");
writer.writeEndElement();
writer.writeEndElement();
writer.writeEndDocument();
writer.flush();
writer.close();
}
}