【问题标题】:Zipping XML into GZIPOutputStream将 XML 压缩到 GZIPOutputStream
【发布时间】:2015-12-29 22:57:06
【问题描述】:

我正在尝试使用 StaX API 创建一些 XML,将其保存在 FileOutputStream 中并将该流放入 GZIPOutPutStream 中。

显然我做错了什么,因为以下代码输出了一个损坏的文件:hello.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();

    }
}

【问题讨论】:

  • 此代码不输出 .txt 文件。我建议您不要运行您认为正在运行的代码。
  • 您一定是正确的 EJP,因为当我现在运行它时,它会输出损坏的 gzip 文件而不是文本文件。我更新了问题以反映这一点。

标签: java xml stax jaxp


【解决方案1】:

答案非常非常简单。我只需要关闭 Gzip 输出流。

outputStreamZip.close();

【讨论】:

    猜你喜欢
    • 2018-08-05
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 2013-08-15
    相关资源
    最近更新 更多