1、先导入jar包
<dependency>
<groupId>net.lingala.zip4j</groupId>
<artifactId>zip4j</artifactId>
<version>1.3.2</version>
</dependency>
2、将多个文件写入到某个文件夹
XWPFTemplate template = XWPFTemplate.compile("src/main/resources/*****.docx").render(dataMap);
FileOutputStream out = new FileOutputStream("src/main/resources/transfer/"+****+"补充协议.docx");
template.write(out);
out.flush();
out.close();
template.close();
3、获取文件夹下所有文件
File file = new File("src/main/resources/transfer");
File[] tempList = file.listFiles();
4、根据名字查看有没有压缩文件
ZipFile zipFile = new ZipFile(“src/main/resources/transfer/****.zip”);
5、给zipFile添加文件
// 判断是否存在
if (file1.exists()) {
file1.delete();
}
// 向zip包中添加文件
for(File file:tempList){
fileAddZip.add(file);
}
6、创建压缩文件
//存放压缩参数
ZipParameters parameters = new ZipParameters();
// 压缩方式(默认值)
parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
// 创建压缩包完成
zipFile.createZipFile(fileAddZip, parameters);
//压缩完成后删除文件
for(File file:tempList){
file.delete();
}
7、最后根据名字和路径导出即可
public static void fileUrl(HttpServletResponse response , String fileName, String realPath) throws Exception {
//String fileName = "合同.docx";
File file = new File(realPath, fileName);
// 如果文件名存在,则进行下载
if (file.exists()) {
// 配置文件下载
response.setHeader("content-type", "application/octet-stream");
response.setContentType("application/octet-stream");
// 下载文件能正常显示中文
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
// 实现文件下载
byte[] buffer = new byte[1024];
FileInputStream fis = null;
BufferedInputStream bis = null;
try {
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
OutputStream os = response.getOutputStream();
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
System.out.println("Download the file successfully!");
bis.close();
fis.close();
if(file.delete()){
System.out.println("删除中间文件成功!");
}
}
catch (Exception e) {
System.out.println("Download the file failed!");
}
finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
Java导出多个文件压缩zip
最新推荐文章于 2024-07-26 03:24:04 发布