Java导出压缩包工具类
/** * @Title: exportZip * @Description:TODO(导出建压缩文件) * @param delAdviceinfo 为项目实体类 * @date 2018年4月4日 下午2:36:41 * @param response * */ public void exportZip(DelAdviceinfo delAdviceinfo, HttpServletResponse response) { OutputStream os = null; ZipOutputStream zos = null; try { os = response.getOutputStream(); zos = new ZipOutputStream(os); String realpath = request.getSession().getServletContext().getRealPath("/"); String filename = "建议正文内容.zip"; response.setContentType("application/octet-stream"); response.setHeader("Connection", "close"); // 表示不能用浏览器直接打开 response.setHeader("Accept-Ranges", "bytes"); // 告诉客户端允许断点续传多线程连接下载 response.setHeader("Content-disposition", "attachment; filename=" + new String(URLEncoder.encode(filename, "utf-8").getBytes("UTF-8"), "ISO-8859-1")); // 查询数据 String userid = getCurrentUserId(); List<String> rolecodes = sysUserMapper.selectRoleCodesByUserID(userid); // 代表 if (rolecodes.contains("db")) { delAdviceinfo.setCurruserid(userid); } // 代表团管理员 else if (rolecodes.contains("dbtgly")) { delAdviceinfo.setArea(getCurrentUser().getAreacode()); } // 承办单位 else if (rolecodes.contains("cbdw")) { delAdviceinfo.setUnitid(getCurrentUser().getDelunitid()); } List<DelAdviceinfo> list = delAdviceinfoMapper.selectBootPage(null, delAdviceinfo); for (DelAdviceinfo item : list) { // 查询附议代表 if (StringUtils.isNotBlank(item.getResolutionerids())) { String[] resoids = item.getResolutionerids().split(","); List<DelDelegationinfoofSc> resos = delDelegationinfoofScMapper.selectResoList(resoids); item.setResos(resos); } // 保存临时文件 String filefullname = item.getTitle() + "正文.doc"; if (StringUtils.isNotEmpty(item.getAdviceno())) { filefullname = item.getAdviceno() + "_" + filefullname; } filefullname = UUID.randomUUID().toString() + "_" + filefullname; String filepath = realpath + "/upload/tmp/" + filefullname; File file = new File(filepath); if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } FileOutputStream fos = new FileOutputStream(file); writeAdviceContent(item, fos); // 加入zip流 String entryname = file.getName(); entryname = entryname.substring(entryname.indexOf("_") + 1); ZipEntry zipEntry = new ZipEntry(entryname); zos.putNextEntry(zipEntry); InputStream is = new FileInputStream(file); int i; while ((i = is.read()) != -1) { zos.write(i); } is.close(); file.delete(); } zos.flush(); } catch (IOException e) { e.printStackTrace(); } finally { try { zos.close(); os.close(); } catch (IOException e2) { e2.printStackTrace(); } } }
Java导出压缩包工具类的更多相关文章
- Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类
Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...
- java导出excel工具类
java导出excel须要使用HSSFWorkbook这个类,须要导入poi-3.6-20091214.jar 工具类调用例如以下: package com.qlwb.business.util; i ...
- WordUtil java导出word工具类
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedWriter ...
- 导入导出Excel工具类ExcelUtil
前言 前段时间做的分布式集成平台项目中,许多模块都用到了导入导出Excel的功能,于是决定封装一个ExcelUtil类,专门用来处理Excel的导入和导出 本项目的持久化层用的是JPA(底层用hibe ...
- javaEE开发之导出excel工具类
web开发中,一个系统的普通需求也包含导出excel,一般採用POI做统计报表导出excel. 导出excel工具类: import java.io.FileOutputStream; import ...
- java下载文件工具类
java下载文件工具类 package com.skjd.util; import java.io.BufferedInputStream; import java.io.BufferedOutput ...
- HttpTool.java(在java tool util工具类中已存在) 暂保留
HttpTool.java 该类为java源生态的http 请求工具,不依赖第三方jar包 ,即插即用. package kingtool; import java.io.BufferedReader ...
- java文件处理工具类
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRead ...
- java格式处理工具类
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...
随机推荐
- AI - TensorFlow - 示例02:影评文本分类
影评文本分类 文本分类(Text classification):https://www.tensorflow.org/tutorials/keras/basic_text_classificatio ...
- 【Caffe篇】--Caffe solver层从初始到应用
一.前述 solve主要是定义求解过程,超参数的 二.具体 #往往loss function是非凸的,没有解析解,我们需要通过优化方法来求解. #caffe提供了六种优化算法来求解最优参数,在solv ...
- java~IDEA引用包时分组所有java包
对于java系统包,我们的IDEA里开发项目时,如果你使用了java系统包,如import java.util,那么,你可以把它和其它第三方的包分开,这样更清晰,我们可以在设置里,代码风格,java ...
- Flink-Kafka-Connector Flink结合Kafka实战
戳更多文章: 1-Flink入门 2-本地环境搭建&构建第一个Flink应用 3-DataSet API 4-DataSteam API 5-集群部署 6-分布式缓存 7-重启策略 8-Fli ...
- SpringBoot技术栈搭建个人博客【后台开发】
前言:在之前,我们已经完成了项目的基本准备,那么就可以开始后台开发了,突然又想到一个问题,就是准备的时候只是设计了前台的RESTful APIs,但是后台管理我们同样也是需要API的,那么就在这一篇里 ...
- Ocelot-基于.NET Core的开源网关实现
写在前面 API网关是系统内部服务暴露在外部的一个访问入口,类似于代理服务器,就像一个公司的门卫承担着寻址.限制进入.安全检查.位置引导等工作,我们可以形象的用下图来表示: 外部设备需要访问内部系统服 ...
- Java使用Aspose组件进行多文档间的转换操作
首先,祝大家新年快乐,2019诸事顺利,很久没有更新博客,今天要给大家说的是 ”Aspose“ 组件,作为2019年第一篇博客,希望大家能够多多支持,2019年要继续加油. 什么是Aspose? As ...
- C#之使类型参数--泛型
1.泛型是什么 泛型的就是“通用类型”,它可以代替任何的数据类型,使类型参数化,从而达到只实现一个方法就可以操作多种数据类型的目的. 2.为什么使用泛型 举一个比较两个数大小的例子: 以上例子实现in ...
- 39.QT-Qtxlsx库使用
之前参考博客https://blog.csdn.net/c3060911030/article/details/51560239下载Qtxlsx库,然后编译的时候,显示: error: invalid ...
- Manacher's Algorithm(马拉车算法)
## 背景 该算法用于求字符串的最长回文子串长度. ## 参考文章 >[最长回文子串——Manacher 算法](https://segmentfault.com/a/1190000003914 ...