JAVA中多个生成多个文件流并打包成zip的方式,全部流操作完成

首先,项目中需要引入jar包


    org.apache.commons
    commons-compress
    1.12

 我们用多个excel文件流生成zip包做示范:

//1:获取excel的文件list

List workbookList = XXXXService.getBillWorkbookList(xxxxList);

//2:吧response的流给到ZipArchiveOutputStream并创建该对象
                ZipArchiveOutputStream zous = new ZipArchiveOutputStream(outputStream);
                zous.setUseZip64(Zip64Mode.AsNeeded);

//遍历文件list
                for (Workbook workbook : workbookList) {

                    //给文件名
                    String fileName = UUID.randomUUID() + ".xlsx";

                    //下面三行是吧excel的文件以流的形式转为byte[]
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    workbook.write(baos);
                    byte[] bytes = baos.toByteArray();
                    ArchiveEntry entry = new ZipArchiveEntry(fileName);
                    zous.putArchiveEntry(entry);
                    zous.write(bytes);
                    zous.closeArchiveEntry();
                    if (baos != null) {
                        baos.close();
                    }
                }
                zous.close();
            }

这样就可以完成该操作了

你可能感兴趣的:(JAVA)