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 ...
随机推荐
- C语言ftell()函数
ftell()函数返回指定流的当前文件指针的位置.在文件末尾移动文件指针后,我们可以使用ftell()函数获取文件的总大小.可以使用SEEK_END常量来将文件指针移动文件末尾. ftell()函 ...
- 测试 ASP.NET Core API Controller
本文需要您了解ASP.NET Core MVC/Web API, xUnit以及Moq相关知识. 这里有xUnit和Moq的介绍: https://www.cnblogs.com/cgzl/p/917 ...
- Linux相关学习笔记-文件系统
在Linux的文件系统中, 相应的文件都按其作用分门别类地放在相关的目录中 以下是最近整理学习的一些, linux中的文件存放 /bin 二进制可执行命令 /dev 设备特殊文件 // 外部设备文件 ...
- SqlServer注意事项总结,高级程序员必背!
本篇文章主要介绍SqlServer使用时的注意事项. 想成为一个高级程序员,数据库的使用是必须要会的.而数据库的使用纯熟程度,也侧面反映了一个开发的水平. 下面介绍SqlServer在使用和设计的过程 ...
- [JavaScript] 函数节流(throttle)和函数防抖(debounce)
js 的函数节流(throttle)和函数防抖(debounce)概述 函数防抖(debounce) 一个事件频繁触发,但是我们不想让他触发的这么频繁,于是我们就设置一个定时器让这个事件在 xxx 秒 ...
- C# 数组Array
数组是对相同类型的一组数据的封装.数组定义的时候,要说明是对哪一种类型的封装,并且要指定长度. using System; using System.Collections.Generic; usin ...
- ADO.NET学习(一)
一.ADO.NET简介 ADO.NET可以看作是C#语言访问数据库的一种方式.编程语言编写的程序需要数据库的支持,那么怎样才能让他们建立连接呢?当然是ADO.NET 二.ADO.NET 整体流程 1) ...
- C# 添加枚举中文资源
在业务开发过程中,添加枚举,在固定枚举值的同时,也需要中文的文案. 如果不想添加语言资源项.添加枚举转语资源项,可以使用特性标记. 属性描述 DescriptionAttribute 先看案例: pu ...
- [笔记]记录原开发工作在base命名空间下扩展的属性与方法
前言 该笔记只是为了记录以前开发使用的方式. 处理命名空间namespace /** * 处理命名空间 * @param {string} 空间名称,可多个 * @return {object} 对象 ...
- 海量数据,大数据处理技术--【Hbase】