Java ZipOutputStream的一些小问题

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

代码"

//根据ID查询出所有的附件
        List list = businessFileDao.findPathByBusinessId(ID);
        ZipOutputStream zipOutputStream = new ZipOutputStream(response.getOutputStream());
        List 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();

你可能感兴趣的:(Java ZipOutputStream的一些小问题)