【发布时间】: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 文件而不是文本文件。我更新了问题以反映这一点。