错误描述
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:1792)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1769)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:1744)
使用ZipInputStream和缓冲输出流对zip文件解压处理报错
错误产生的代码
try (FileOutputStream outputStream
= new new FileOutputStream(filePath
)) {
IOUtils
.copy(zipInputStream
, outputStream
);
outputStream
.flush();
}
zipInputStream
.closeEntry();
解决方法–修改代码如下
try (FileOutputStream outputStream
= new FileOutputStream(filePath
)) {
int n
= 0;
byte[] buffer
= new byte[512];
try {
while (-1 != (n
= zipInputStream
.read(buffer
))) {
outputStream
.write(buffer
, 0, n
);
}
} catch (IOException e
) {
log
.error("unZipFileIOException:", e
);
}
zipInputStream
.closeEntry();
}
public ZipInputStream(InputStream in
, Charset charset
) {
super(new PushbackInputStream(in
, 512), new Inflater(true), 512);
usesDefaultInflater
= true;
if(in
== null
) {
throw new NullPointerException("in is null");
}
if (charset
== null
)
throw new NullPointerException("charset is null");
this.zc
= ZipCoder
.get(charset
);
}