2015-10-01 2 views
0

Я пытаюсь использовать StaX API для создания некоторого XML, сохранить его в FileOutputStream и поместить этот поток внутри GZIPOutPutStream.Zipping XML в 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(); 

    } 
} 
+0

Этот код не выводит .txt-файл. Я предлагаю вам не использовать код, который, как вы думаете, вы используете. – EJP

+0

Вы, должно быть, были правы EJP, потому что, когда я запускаю его, теперь он выводит поврежденный файл gzip, а не текстовый файл. Я обновил вопрос, чтобы отразить это. – user2725919

ответ

0

Ответ был очень прост. Мне просто нужно было закрыть поток вывода Gzip.

outputStreamZip.close();