java 文件zip打包下载 多个文件夹分类
重点在于
zos.putNextEntry(new ZipEntry(entry.getKey() + File.separator + file.getName()));
这一行代码。使用entry.getKey()用来作为文件夹名,File.separator是作为分隔符(windows是 \ )
以下为项目中使用的完整代码。
public void zipMultipleFiles(Map<String, List<File>> files, HttpServletResponse response) {String downloadFilename = SDF.format(new Date());ZipOutputStream zos = null;InputStream in = null;List<String> fileNameList = new ArrayList<>();try {response.setContentType("application/octet-stream");// 指明response的返回对象是文件流response.setHeader("Content-Disposition", "attachment;filename=" + downloadFilename);// 设置在下载框默认显示的文件名downloadFilename = URLEncoder.encode(downloadFilename, "UTF-8");zos = new ZipOutputStream(response.getOutputStream());for (Map.Entry<String, List<File>> entry : files.entrySet()) {System.out.println(entry.getKey());if (EmptyUtil.isNotEmpty(entry.getValue())) {for (File file : entry.getValue()) {zos.putNextEntry(new ZipEntry(entry.getKey() + File.separator + file.getName()));in = new FileInputStream(FileUtil.getFilePath(file.getFileName()));byte[] buffer = new byte[1024];int r = 0;while ((r = in.read(buffer)) != -1) {zos.write(buffer, 0, r);}in.close();}zos.flush();}}} catch (Exception e) {logger.error("zipFiles error!!", e);} finally {if (EmptyUtil.isNotEmpty(zos)) {try {zos.close();} catch (IOException e) {e.printStackTrace();}try {zos.flush();} catch (IOException e) {e.printStackTrace();}}if (EmptyUtil.isNotEmpty(in)) {try {in.close();} catch (IOException e) {e.printStackTrace();}}}}
参考资料:https://yq.aliyun.com/articles/700155
java 文件zip打包下载 多个文件夹分类相关推荐
- Yii2实现文件zip打包下载功能
public function actionFiles($ids){$ids = explode(',',$ids);$materialData = Material::findAll($ids);$ ...
- JAVA实现文件批量打包下载
JAVA实现文件批量打包下载 实现 1.打包工具类的实现 /*** @author zhouxuan* @since 2019/4/19*/ public class ZipUtils {/*** @ ...
- zip格式压缩文件并打包下载
压缩文件并下载 zip格式压缩文件并打包下载 zip格式压缩文件并打包下载 Map<String, String> param = new HashMap<String, Strin ...
- C# 用zip,批量压缩文件,并打包下载
C# 用zip,批量压缩文件,并打包下载,无需产生临时文件,二种都可以 using ICSharpCode.SharpZipLib.Checksums; using ICSharpCode.Sharp ...
- Java web系统打包成exe安装文件
Java web系统打包成exe安装文件 一. 工具准备 1. NSIS打包工具: http://nsis.sourceforge.net下载并安装: 2. NSIS ...
- JavaWeb通过http下载多个文件,打包下载,压缩下载
JavaWeb通过http下载多个文件,打包下载,压缩下载 DownloadController.java 代码如下 package gov.zhbs.web;import gov.zhbs.util ...
- 阿里云OSS文件批量打包下载
阿里云OSS文件批量打包下载 public void downloadReport(List<String> fileNames,HttpServletResponse response) ...
- ASP.NET多文件批量打包下载
在项目实施中,遇到了将多个文件一起打包后,提供给用户下载.如:在一个ASP.NET的开发项目中,通过一个GridView选中对应行数据的CheckBox,就可以实现对选中文件的打包下载了. 在对多文件 ...
- 浏览器中利用js打包下载所有类型文件
浏览器中利用js打包下载所有类型文件 概述 ajax请求方式打包下载所有类型文件 canvas渲染方式打包下载所有图片 相关知识 作者 概述 需求:1.项目中在浏览器中点击按钮后根据多个url地址下载 ...
- 实现多个存储服务器上文件浏览器打包下载
关于本地文件zip打包返回给浏览器下载,这边有个很好的例子读取本地文件打包返回给浏览器下载,基本能解决的相关问题.而最近因为项目原因,打包返回给浏览器下载的是存储在fdfs上文件,然后对此代码修改了下 ...
最新文章
- C++ int与string的相互转换(含源码实现)
- 怎样用C语言数码管编写E1显示程序,跪求单片机0~99数码管显示用C语言编写的程序...
- 数据库——高级匹配条件
- POJ2777 Count Color 线段树区间更新
- OpenCV连接的组件Connected Components的实例(附完整代码)
- 计算机用户的特点,计算机应用基础 Windows的主要特点
- HTML5+NodeJs实现WebSocket即时通讯
- DNN:逻辑回归与 SoftMax 回归方法
- 自己总结的sql基本操作
- Pytorch Feature loss与Perceptual Loss的实现
- 神经元模型图手工制作,神经元模型图手工模型
- 计算机无法预览文件,win10系统百度网盘文件无法预览的解决方法
- syn 攻击脚本 python_python制作SYN泛洪攻击工具
- 在 QNAP(威联通)NAS 上自动查找和删除 重复文件 的方法
- 教你设置QQ空间个性签名档
- 【java】模拟物流快递系统程序设计
- 刷机入门 手把手教程
- showdown解析md文件
- Android之QQ登录
- 不允许一个用户使用一个以上用户名域一个服务器或共享
热门文章
- 原生Js从0开始实现一个链家网地图画圈找房功能
- 5G和4G有那些区别
- Chrome 谷歌浏览器查看网站证书
- 2021 Java面试真题集锦
- Android团队技术随写、随写
- 合同法律风险管理 被骗者刑事风险
- HTML:Marked-js+Bootstarp简单实现Markdown文本编辑器
- .9图片处理报错Error: java.lang.RuntimeException: Crunching Cruncher ic_coupon2.9.png failed, see logs
- 安卓手机投屏到台式电脑非常简单,系统工具就成
- 点到平面的距离、向量与平面夹角