Java ZipOutputStream的一些小问题

场景 : 在对多文件打包下载的时候出现了问题 在使用360解压时不会出现 错误 在使用 rar 7z等软件解压时会出现(不可预料的压缩文件末端)

代码"

//根据ID查询出所有的附件
        List<BusinessFileDO> list = businessFileDao.findPathByBusinessId(ID);
        ZipOutputStream zipOutputStream = new ZipOutputStream(response.getOutputStream());
        List<InputStream> streamList = new ArrayList<>();
        for (BusinessFileDO fileDO : list) {
            InputStream inputStream;
            String fileName = fileDO.getFileName();
            String fullPath = fileDO.getFullPath();
            String webServer = fileDO.getWebServer();
            //构建附件路径
            URL url = new URL(webServer + fullPath);
            //下载
            inputStream = url.openStream();
            streamList.add(inputStream);
            ZipUtil.createZipList(zipOutputStream, inputStream, fileName);

        }
        zipOutputStream.closeEntry();

后来发现是没有关闭流的问题 :
一开始使用的是 zipOutputStream.closeEntry();


java.util.zip.ZipInputStream类主要方法

解决办法:
需要关闭流 不然会出现压缩包打开(不可预料的压缩文件末端)
zipOutputStream.close();

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容