Java生成ZIP压缩包
一、使用步骤
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压缩包相关推荐
- java zip追加_基于Java向zip压缩包追加文件
这篇文章主要介绍了基于Java向zip压缩包追加文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 有个需求,从某个接口下载的一个zip压缩包,往里 ...
- python web项目导出zip文件_通过javascript在网页端生成zip压缩包并下载
zip.js是什么 通过zip.js封装一个能在网页端生成zip文件的插件, 直接在网页中创建包含文件夹和文件的压缩包,也可以自定义名字并下载: 如何使用: 1:引用zip.js 2:引用jQuery ...
- 通过javascript在网页端生成zip压缩包并下载
通过javascript在网页端生成zip压缩包并下载 原文:通过javascript在网页端生成zip压缩包并下载 zip.js是什么 zip.js的github项目地址:http://gildas ...
- java批量下载生成zip压缩包
设计思路: 1.本地先创建一个zip文件 2.将批量下载的文件依次放入zip文件中 3.将zip文件返回给前端 //一.本地先生成zip文件//要批量下载的文件id数组 String[] ids = ...
- JavaWeb项目文件夹生成Zip压缩包并下载到本地
1.FileToZip接口类 /** * */ package com.sale.util; import java.io.BufferedInputStream; import java.i ...
- 多个文件生成zip压缩包人后浏览器进行下载
多个文件生成zip 浏览器下载 前言 直接上代码(多个文件生成zip 然后浏览器下载代码) 控制层 前言 第一次写博客 只是想让自己做一些笔记 以后用到我可以在这里找到 直接上代码(多个文件生成zip ...
- PHP生成zip压缩包
压缩一个文件 我们将一个文件生成一个压缩包. <?php $path = "c:/wamp/www/log.txt"; $filename = "test.zip& ...
- java 生成zip如法打开_Java创建ZIP压缩文件的方法
本文实例讲述了Java创建ZIP压缩文件的方法.分享给大家供大家参考.具体如下: 这里注意:建议使用org.apache.tools.zip.*包下相关类,否则可能会出现中文乱码问题. /** * 压 ...
- Java实现Zip压缩包解压
对zip压缩包的解压是比较常见的应用场景,java代码的实现也很简单.废话不多说,直接上代码吧 一.代码 /** * zip解压 * @param srcFile zip源文件 * @ ...
最新文章
- 关于虚拟机vmware共享虚拟网卡上网
- c语言有趣代码_【新课预知】——C语言程序设计
- 深入MTK平台bootloader启动分析笔记
- 资深程序员的笔记:工作多年对于编程语言的理解,新手建议了解!
- [转载]一个本科生在世界五大顶尖咨询公司实习心得
- 发那科系统C语言执行器,FANUC NC Guide数控仿真系统 PMC梯形图模拟
- 华为手机如何给应用加锁_如何设置华为手机应用程序锁?
- 服务器系统怎么用主板做RAID,超微主板如何创建RAID磁盘阵列 服务器组建RAID0、RAID1教程(图文)...
- html5 blockquote,HTML blockquote 标签 | w3cschool菜鸟教程
- vue3前端获取文件md5码
- linux查看硬盘命令ls,linux 硬件信息查看命令
- C语言入门 函数调用 main函数 int main 是什么
- 暴雪即将公布《暗黑破坏神3》新职业
- python add picture显示过大_利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例...
- android存储pdf文件怎么打开,android打开pdf文件
- 0906期特别策划——“架构师大阅兵”
- MFC VS2010 Open CASCADE新建自己的工程
- WebGoat使用指南
- php 爬取新闻,scrapy抓取学院新闻报告
- CSS处理图片渲染时拉伸和挤压变形
热门文章
- HDMI 2.1 VRR功能详解
- OSI七层模型及TCP/IP网络四层模型
- Cowardly refusing to `sudo brew install`
- virtualBox安装增强功能及安装过程中出现的一系列问题的解决
- RecyclerView 横向滑动
- Hive sql中的 各种join(内连接、左外连接、右外连接、满外连接)
- 188. 买卖股票的最佳时机 IV(JavaScript)
- 【Dash】Dash相关领域知识总结
- 【老王的脑科学谬论】在CSDN问答区对网友提问的回复(一)
- MES系统生产过程管理解决方案,主要包含哪些功能模块?