commons-io:java.io.EOFException:ZLIB输入流

时间:2018-03-28 18:23:35

标签: java apache-commons-io gzipinputstream

我在verion 2.6 中使用Apache库 commons-io 来解析zip流并获取其字节。但是当我调用IOUtils.toByteArray(zipStreamObject)时,我得到一个 java.io.EOFException:ZLIB输入流的意外结束

这是我的代码:

public static void descompactarArquivoZip(Path arquivoZip) throws IOException {
    InputStream is = new FileInputStream(arquivoZip.toFile());
    try(ZipInputStream zis = new ZipInputStream(is)) {
        unzipStream(zis);
    }
}

private static void unzipStream(ZipInputStream zis) throws IOException {
    ZipEntry entry;
    while ((entry = zis.getNextEntry()) != null) {
        byte[] bytes = IOUtils.toByteArray(zis); // the error occurs here
        zis.closeEntry();
    }
}

这是堆栈跟踪:

java.io.EOFException: Unexpected end of ZLIB input stream
    at java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:240)
    at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
    at java.util.zip.ZipInputStream.read(ZipInputStream.java:194)
    at java.io.FilterInputStream.read(FilterInputStream.java:107)
    at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2314)
    at org.apache.commons.io.IOUtils.copy(IOUtils.java:2270)
    at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2291)
    at org.apache.commons.io.IOUtils.copy(IOUtils.java:2246)
    at org.apache.commons.io.IOUtils.toByteArray(IOUtils.java:765)
顺便说一句,我知道我可以采用这个解决方案:Exception: Unexpected end of ZLIB input stream但我不想在我的代码中实现这一点,实际上,我有非GZIP流当我尝试这样做时出错。

有人可以帮助我吗?

0 个答案:

没有答案