一、使用步骤

1.引入工具

代码如下(复制粘贴即可):在util包中创建一个zip工具类=>ZipUtile


public class ZipUtile {/*** @param response* @param fileList 多文件列表* @param zipPath 压缩的文件暂存的目录,下载后会删除掉*/public static void zipFiles(HttpServletResponse response, List<File> fileList, File zipPath) {// 1 文件压缩if (!zipPath.exists()) { // 判断压缩后的文件存在不,不存在则创建try {zipPath.createNewFile();} catch (IOException e) {e.printStackTrace();}}FileOutputStream fileOutputStream=null;ZipOutputStream zipOutputStream=null;FileInputStream fileInputStream=null;try {fileOutputStream=new FileOutputStream(zipPath); // 实例化 FileOutputStream对象zipOutputStream=new ZipOutputStream(fileOutputStream); // 实例化 ZipOutputStream对象ZipEntry zipEntry=null; // 创建 ZipEntry对象for (int i=0; i<fileList.size(); i++) { // 遍历源文件数组fileInputStream = new FileInputStream(fileList.get(i)); // 将源文件数组中的当前文件读入FileInputStream流中zipEntry = new ZipEntry(fileList.get(i).getName()); // 实例化ZipEntry对象,源文件数组中的当前文件zipOutputStream.putNextEntry(zipEntry);int len; // 该变量记录每次真正读的字节个数byte[] buffer=new byte[1024]; // 定义每次读取的字节数组while ((len=fileInputStream.read(buffer)) > 0) {zipOutputStream.write(buffer, 0, len);}}zipOutputStream.closeEntry();zipOutputStream.close();fileInputStream.close();fileOutputStream.close();// 2 文件下载long currentTime=System.currentTimeMillis(); // 当时时间戳int randomFour=(int)((Math.random()*9+1)*1000); // 4位随机数String fileName=String.valueOf(currentTime)+String.valueOf(randomFour)+".zip"; // 新的文件名称String path=zipPath.toString();// 设置输出的格式response.reset();response.setContentType("bin");response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");// 循环取出流中的数据FileInputStream inStream=new FileInputStream(path); // 读到流中byte[] b = new byte[100];int len;try {OutputStream os=response.getOutputStream();response.setContentType("application/octet-stream");while ((len = inStream.read(b)) > 0){os.write(b, 0, len);}inStream.close();os.flush();os.close();} catch (IOException e) {e.printStackTrace();}} catch (IOException e) {e.printStackTrace();} finally {try {  // 3 删除压缩包String path=zipPath.toString();File zfile = new File(path);zfile.delete();} catch (Exception e){e.printStackTrace();}}}
}

2.实际应用

代码如下(示例):

//File()括号内是文件生成的本地路径,为E盘的test文件夹内
//文件生成名称为“静态名称学生姓名.doc”File file1 =new File("E:\\test\\静态名称--" + student.name() + ".doc")
File file2 =new File("E:\\test\\静态名称--" + student.name() + ".doc")List<File> fileList = new ArrayList<>();
fileList.add(file1);
fileList.add(file2);//生成压缩包的路径,为E盘的test文件夹内
//压缩包生成名称为“静态名称学生姓名.zip”
File zPath = new File("E:\\test\\静态名称--" + student.name() + ".zip");ZipUtile.zipFiles(response, fileList, zPath);

Java生成ZIP压缩包相关推荐

  1. java zip追加_基于Java向zip压缩包追加文件

    这篇文章主要介绍了基于Java向zip压缩包追加文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 有个需求,从某个接口下载的一个zip压缩包,往里 ...

  2. python web项目导出zip文件_通过javascript在网页端生成zip压缩包并下载

    zip.js是什么 通过zip.js封装一个能在网页端生成zip文件的插件, 直接在网页中创建包含文件夹和文件的压缩包,也可以自定义名字并下载: 如何使用: 1:引用zip.js 2:引用jQuery ...

  3. 通过javascript在网页端生成zip压缩包并下载

    通过javascript在网页端生成zip压缩包并下载 原文:通过javascript在网页端生成zip压缩包并下载 zip.js是什么 zip.js的github项目地址:http://gildas ...

  4. java批量下载生成zip压缩包

    设计思路: 1.本地先创建一个zip文件 2.将批量下载的文件依次放入zip文件中 3.将zip文件返回给前端 //一.本地先生成zip文件//要批量下载的文件id数组 String[] ids = ...

  5. JavaWeb项目文件夹生成Zip压缩包并下载到本地

    1.FileToZip接口类 /**  *  */ package com.sale.util; import java.io.BufferedInputStream;   import java.i ...

  6. 多个文件生成zip压缩包人后浏览器进行下载

    多个文件生成zip 浏览器下载 前言 直接上代码(多个文件生成zip 然后浏览器下载代码) 控制层 前言 第一次写博客 只是想让自己做一些笔记 以后用到我可以在这里找到 直接上代码(多个文件生成zip ...

  7. PHP生成zip压缩包

    压缩一个文件 我们将一个文件生成一个压缩包. <?php $path = "c:/wamp/www/log.txt"; $filename = "test.zip& ...

  8. java 生成zip如法打开_Java创建ZIP压缩文件的方法

    本文实例讲述了Java创建ZIP压缩文件的方法.分享给大家供大家参考.具体如下: 这里注意:建议使用org.apache.tools.zip.*包下相关类,否则可能会出现中文乱码问题. /** * 压 ...

  9. Java实现Zip压缩包解压

    对zip压缩包的解压是比较常见的应用场景,java代码的实现也很简单.废话不多说,直接上代码吧 一.代码  /** * zip解压 * @param srcFile        zip源文件 * @ ...

最新文章

  1. 关于虚拟机vmware共享虚拟网卡上网
  2. c语言有趣代码_【新课预知】——C语言程序设计
  3. 深入MTK平台bootloader启动分析笔记
  4. 资深程序员的笔记:工作多年对于编程语言的理解,新手建议了解!
  5. [转载]一个本科生在世界五大顶尖咨询公司实习心得
  6. 发那科系统C语言执行器,FANUC NC Guide数控仿真系统 PMC梯形图模拟
  7. 华为手机如何给应用加锁_如何设置华为手机应用程序锁?
  8. 服务器系统怎么用主板做RAID,超微主板如何创建RAID磁盘阵列 服务器组建RAID0、RAID1教程(图文)...
  9. html5 blockquote,HTML blockquote 标签 | w3cschool菜鸟教程
  10. vue3前端获取文件md5码
  11. linux查看硬盘命令ls,linux 硬件信息查看命令
  12. C语言入门 函数调用 main函数 int main 是什么
  13. 暴雪即将公布《暗黑破坏神3》新职业
  14. python add picture显示过大_利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例...
  15. android存储pdf文件怎么打开,android打开pdf文件
  16. 0906期特别策划——“架构师大阅兵”
  17. MFC VS2010 Open CASCADE新建自己的工程
  18. WebGoat使用指南
  19. php 爬取新闻,scrapy抓取学院新闻报告
  20. CSS处理图片渲染时拉伸和挤压变形

热门文章

  1. HDMI 2.1 VRR功能详解
  2. OSI七层模型及TCP/IP网络四层模型
  3. Cowardly refusing to `sudo brew install`
  4. virtualBox安装增强功能及安装过程中出现的一系列问题的解决
  5. RecyclerView 横向滑动
  6. Hive sql中的 各种join(内连接、左外连接、右外连接、满外连接)
  7. 188. 买卖股票的最佳时机 IV(JavaScript)
  8. 【Dash】Dash相关领域知识总结
  9. 【老王的脑科学谬论】在CSDN问答区对网友提问的回复(一)
  10. MES系统生产过程管理解决方案,主要包含哪些功能模块?