Java 实现文件压缩下载

539 阅读1分钟

需求

将材料列表所勾选的材料批量打包压缩下载,每一项材料对应一个文件夹,每个文件夹下对应材料附件。

核心代码如下:

    import org.apache.tools.zip.ZipEntry;   
    import org.apache.tools.zip.ZipOutputStream;

    File file = new File("tmp" + File.separator + "测试.zip"); //新建压缩文件夹名称
    File fileParent = file.getParentFile(); //父文件夹
    if(!fileParent.exists()){ //如果父文件夹不存在则新建文件夹
      fileParent.mkdirs();
    }
    if(!file.exists()){ //如果文件不存在,则新建文件
      file.createNewFile();
    }
    
    
   ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(file)); //建立压缩文件
   zos.putNextEntry(new ZipEntry("aaa/aa.doc"));//建立aaa文件夹,并在下面生成aa.doc文件
   zos.write(bos.toByteArray()); //将内容写入新加的aa.doc文件
   zos.putNextEntry(new ZipEntry("bbb/bb.doc"));//建立bbb文件夹,并在下面生成bb.doc文件
   zos.write(bos.toByteArray());//将内容写入新加的bb.doc文件
   zos.putNextEntry(new ZipEntry("ccc/"));//建立ccc文件夹,此文件夹为空
   zos.closeEntry(); //关闭
   zos.close(); //关闭压缩流
   
   
  response.setContentType("APPLICATION/OCTET-STREAM");
  response.setHeader("Content-Disposition", "attachment; filename=" + zipName);//zipName为下载的文件名
  outp = response.getOutputStream(); //输出流用于下载
  outp.flush();