Java 将XML压缩到GZIPOutputStream中
我试图使用staxapi创建一些XML,将其保存在FileOutputStream中,并将该流放入GZIPOutPutStream中 显然,我做错了什么,因为下面的代码输出了一个损坏的文件:hellow.xml.gz。我可以打开zip文件,看到里面的xml文件。但是在提取时,我得到一个错误,说文件已损坏 如果我输出到一个文本文件,而不是试图用GZIPOutPutStream压缩文件,那么代码只在文件中工作。如何让xml正确写入并压缩到gzip中Java 将XML压缩到GZIPOutputStream中,java,xml,stax,jaxp,Java,Xml,Stax,Jaxp,我试图使用staxapi创建一些XML,将其保存在FileOutputStream中,并将该流放入GZIPOutPutStream中 显然,我做错了什么,因为下面的代码输出了一个损坏的文件:hellow.xml.gz。我可以打开zip文件,看到里面的xml文件。但是在提取时,我得到一个错误,说文件已损坏 如果我输出到一个文本文件,而不是试图用GZIPOutPutStream压缩文件,那么代码只在文件中工作。如何让xml正确写入并压缩到gzip中 public class Main {
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();
}
}
答案很简单。我只需要关闭Gzip输出流
outputStreamZip.close();
此代码不输出.txt文件。我建议您不要运行您认为正在运行的代码。您一定是正确的EJP,因为当我现在运行它时,它输出的是损坏的gzip文件,而不是文本文件。我更新了问题以反映这一点。