我在解压缩文件并将其写入另一个文件时遇到此问题。这是代码。任何人都可以告诉我需要做哪些更改。
我在使用while ((len = zis.read(buffer)) > 0)
private FileItem readZippedFileRequest(HttpServletRequest request,Part part, String fileName) {
FileItem fileItem = null;
byte[] buffer = new byte[1024];
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);
}
return fileItem;
}
答案 0 :(得分:0)
您的代码没有任何问题。消息说,文件有问题。你确定它是压缩的,而不是GZipped吗?一部分被GZip更常见。试试GZIPInputStream.
NB不需要ByteArrayInputStream.
这完全是浪费时间和空间。只需将zip / gzip输入流直接传递给createCSVFile()
方法。
答案 1 :(得分:0)
我也有这个错误,我搜索了一下......我已经读过zis.closeEntry();
之前必须有len = zis.read(buffer)
但我尝试了然后错误出现在{{1} }
我问谷歌,这是答案:
!回答!
我尝试写了一点,然后我在zis.closeEntry();
中切换了throws IOException
,现在没事了。
异常是一个众所周知的错误。你必须将所有内容都放在try/catch-block
中并且在捕获中不执行任何操作。
try/catch-block