微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在nextEtnry / closeEntry上ZipInputStream流关闭错误

如何解决在nextEtnry / closeEntry上ZipInputStream流关闭错误

我正在尝试上传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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。