问题描述
我正在尝试上传1个zip文件并将其提取到AWS S3存储桶中。我收到流关闭错误:
java.io.IOException: Stream closed
at java.base/java.util.zip.ZipInputStream.ensureOpen(UnkNown Source)
at java.base/java.util.zip.ZipInputStream.getNextEntry(UnkNown Source)
at com.abc.Handler.extractAndProcessZipFile(Handler.java:115)
这是我的代码段:
try {
ZipInputStream zis = new ZipInputStream(
S3ObjectUtils.getS3Object(S3_INBOUND,FILE_PATH + Metadata.getobjectKey(),this.amazonS3Client)
.getobjectContent());
ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) { //Stream closed Error here when I comment closeEntry()
String fileName = entry.getName();
String srcKey = Metadata.getobjectKey().replace('+',' ');
srcKey = URLDecoder.decode(FILE_PATH + fileMetadata.getobjectKey(),"UTF-8");
// Covert to plain text
String mimeType = "text/plain";
ObjectMetadata Meta = new ObjectMetadata();
Meta.setContentLength(entry.getSize());
Meta.setContentType(mimeType);
this.amazonS3Client.putObject(S3_IN,FilenameUtils.getFullPath(srcKey) + fileName,zis,Meta);
zis.closeEntry(); // Stream Closed error here
}
zis.close();
} catch (IOException e) {
e.printstacktrace();
}
解决方法
通过删除zis.closeEntry进行修复,并将其更改为if