搜索
您的当前位置:首页正文

java实现多文件打包压缩,导出zip文件

来源:筏尚旅游网

一.实现多文件打包压缩

    @Test
    public void testZipFile() throws IOException {
        String filePath = "D:\\导出压缩文件.zip";
        OutputStream outputStream = new FileOutputStream(filePath);
        try (ZipOutputStream zipOutputStream = new ZipOutputStream(outputStream)) {
            // excel
            zipOutputStream.putNextEntry(new ZipEntry("excel文件.xlsx"));
            byte[] excelFile = FileUtil.readBytes("D:\\excel文件.xlsx");
            zipOutputStream.write(excelFile);
            zipOutputStream.flush();
            zipOutputStream.closeEntry();

            // doc
            zipOutputStream.putNextEntry(new ZipEntry("doc文件.docx"));
            byte[] docFile = FileUtil.readBytes("D:\\doc文件.docx");
            zipOutputStream.write(docFile);
            zipOutputStream.flush();
            zipOutputStream.closeEntry();

            // pdf
            zipOutputStream.putNextEntry(new ZipEntry("pdf文件.pdf"));
            byte[] pdfFile = FileUtil.readBytes("D:\\pdf文件.pdf");
            zipOutputStream.write(pdfFile);
            zipOutputStream.flush();
            zipOutputStream.closeEntry();

            // ...

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

二.导出zip文件接口

    @RequestMapping("exportZipFile")
    public void exportZipFile(HttpServletResponse response) throws IOException {
        String zipName = "D:\\导出压缩文件.zip";
        response.setContentType("application/OCTET-STREAM;charset=UTF-8");
        response.setHeader("Content-Disposition", "attachment; filename="
                + new String(zipName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1));

        try (ServletOutputStream outputStream = response.getOutputStream();
             ZipOutputStream zipOutputStream = new ZipOutputStream(outputStream)) {
            // excel
            zipOutputStream.putNextEntry(new ZipEntry("excel文件.xlsx"));
            byte[] excelFile = FileUtil.readBytes("D:\\excel文件.xlsx");
            zipOutputStream.write(excelFile);
            zipOutputStream.flush();
            zipOutputStream.closeEntry();

            // doc
            zipOutputStream.putNextEntry(new ZipEntry("doc文件.docx"));
            byte[] docFile = FileUtil.readBytes("D:\\doc文件.docx");
            zipOutputStream.write(docFile);
            zipOutputStream.flush();
            zipOutputStream.closeEntry();

            // pdf
            zipOutputStream.putNextEntry(new ZipEntry("pdf文件.pdf"));
            byte[] pdfFile = FileUtil.readBytes("D:\\pdf文件.pdf");
            zipOutputStream.write(pdfFile);
            zipOutputStream.flush();
            zipOutputStream.closeEntry();

            // ...
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

因篇幅问题不能全部显示,请点此查看更多更全内容

Top