Java EOFEException:ZLIB输入流意外结束
我在解压一个文件并将其写入另一个文件时遇到了这个问题。这是代码。有人能告诉我需要做什么修改吗 当((len=zis.read(buffer))>0)Java EOFEException:ZLIB输入流意外结束,java,zip,Java,Zip,我在解压一个文件并将其写入另一个文件时遇到了这个问题。这是代码。有人能告诉我需要做什么修改吗 当((len=zis.read(buffer))>0) 你的代码没有问题。正如消息所说,文件有问题。你确定它是压缩的,而不是压缩的吗?更常见的情况是将零件压缩。尝试一个gzip输入流。 注意:没有必要使用ByteArrayInputStream。这完全是浪费时间和空间。只需将zip/gzip输入流直接传递给您的createCSVFile()方法。我也有这个错误,我搜索了一点。。。我读到一定有zis.cl
你的代码没有问题。正如消息所说,文件有问题。你确定它是压缩的,而不是压缩的吗?更常见的情况是将零件压缩。尝试一个
gzip输入流。
注意:没有必要使用
ByteArrayInputStream。
这完全是浪费时间和空间。只需将zip/gzip输入流直接传递给您的createCSVFile()
方法。我也有这个错误,我搜索了一点。。。我读到一定有zis.closeEntry()
在len=zis.read(buffer)
之前,但我尝试了它,然后错误出现在zis.closeEntry()代码>
我问过谷歌,答案如下:
!!回答
我试着写了一点,然后切换了try/catch块中的throwsioexception
,现在一切正常。
这个异常是一个众所周知的bug。您必须将所有内容放入一个try/catch块
,在catch中什么也不做
private FileItem readZippedFileRequest(HttpServletRequest request,Part part, String fileName) {
FileItem fileItem = null;
byte[] buffer = new byte[1024];
try{
InputStream inputStream = part.getInputStream();
ZipInputStream zis = new ZipInputStream(inputStream);
ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
ByteArrayOutputStream fos = new ByteArrayOutputStream();
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
InputStream myByteArray = new ByteArrayInputStream(fos.toByteArray());
fileItem = createCSVFile(myByteArray, fileName,ImportExportConstant.FILE_TYPE_EXCEL);
}
}catch(IOException ex){
//Do nothing here
}
return fileItem;
}
你能发布堆栈跟踪吗?
private FileItem readZippedFileRequest(HttpServletRequest request,Part part, String fileName) {
FileItem fileItem = null;
byte[] buffer = new byte[1024];
try{
InputStream inputStream = part.getInputStream();
ZipInputStream zis = new ZipInputStream(inputStream);
ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
ByteArrayOutputStream fos = new ByteArrayOutputStream();
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
InputStream myByteArray = new ByteArrayInputStream(fos.toByteArray());
fileItem = createCSVFile(myByteArray, fileName,ImportExportConstant.FILE_TYPE_EXCEL);
}
}catch(IOException ex){
//Do nothing here
}
return fileItem;
}