我正在使用2.6版中的 Apache 库commons-io来解析 zip 流并获取其字节。但是当我打电话时,我得到一个java.io.EOFException: Unexpected end of ZLIB input stream。IOUtils.toByteArray(zipStreamObject)
这是我的代码:
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)
顺便说一句,我知道我可以采用这个解决方案:异常:ZLIB 输入流的意外结束,但我不想在我的代码中实现这一点,实际上,当我尝试这样做时,我遇到了非 GZIP 流错误。
有人可以帮帮我吗?