Java 从字节形式的zip读取zip条目的内容

Java 从字节形式的zip读取zip条目的内容,java,Java,我调用了一些返回HTTP响应的代码。我可以得到返回字节数组的响应的内容。字节表示一个zip文件,我希望提取该文件并获取单个文件的内容(zip仅包含一个文件) 目前,我有一些乱七八糟的代码(如果我保留它,我需要将其清理干净),似乎可以工作: byte[] bytes = response.out.toByteArray(); ByteArrayInputStream input = new ByteArrayInputStream(bytes); ZipInputStrea

我调用了一些返回HTTP响应的代码。我可以得到返回字节数组的响应的内容。字节表示一个zip文件,我希望提取该文件并获取单个文件的内容(zip仅包含一个文件)

目前,我有一些乱七八糟的代码(如果我保留它,我需要将其清理干净),似乎可以工作:

    byte[] bytes = response.out.toByteArray();
    ByteArrayInputStream input = new ByteArrayInputStream(bytes);
    ZipInputStream zip = new ZipInputStream(input);
    ByteArrayOutputStream output = new ByteArrayOutputStream();
    zip.getNextEntry();
    int data;
    while ((data = zip.read()) != -1) output.write(data);
    output.close();
    zip.close();
    input.close();
    byte[] kmlBytes = output.toByteArray();
    String contents = new String(kmlBytes, "UTF-8");

但是我想知道是否有更干净的方法来做同样的事情,因为上面的代码看起来非常丑陋。

为了避免“重新发明轮子”,减少混乱,并专注于应用程序的业务逻辑,而不是像这样的低级代码,您可以使用。

添加所需的try/catch块并确保正确关闭流之后,它就可以了,看起来会更难看;)我想重新发明轮子,怎么办?阅读Apache Commons Compress的源代码。或者更好的是,读一下这本书。