将文件夹保留目录打包为 ZIP 压缩包并下载
上周做了一个需求,要求将数据库保存的 html 界面取出后将服务器下的css和js文件一起打包压缩为ZIP文件,返回给前台;在数据库中保存的是html标签,查出后,我把这些内容写入css和js等其他文件所在目录的一个文件内,然后将这整个文件夹压缩打包下载,解决过程中遇到了下载出来后并没有保存层级目录,在查了好久方法后完成了如下版本,已经可以正常下载并保留层级目录。
话不多说,直接上代码,有不足的地方希望大哥们提出来一起探讨
//ZIP文件包压缩下载
@Override
public void downloadZip(String id,HttpServletResponse response) {
String zipPath = "你的路径";
File file = new File(zipPath,"index.html");//创建指定目录和文件名称的文件对象
BufferedWriter bw = null;//创建缓冲流
try {
//校验文件目录是否存在,文件是否存在
chenkFile(file,zipPath);
//这一步是我将指定内容从数据库写入文件
ModuleInfo moduleInfo = moduleDao.getByModId(id);
bw = new BufferedWriter(new FileWriter(file));
//把内容写入临时文件中
bw.write(moduleInfo.getContent());
//此处不能删除,要关闭一次 不关闭无法写入内容 导致压缩包内文件无内容
bw.flush();
bw.close();
//将目标文件压缩为ZIP并下载
ZipUtil.zip(zipPath,response);
//删除文件(防止下一次压缩时有重复文件名)
file.delete();
} catch (Exception e) {
log.error