重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍Java将文件夹保留目录打包为 ZIP压缩包并下载的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
网站设计制作、成都网站建设介绍好的网站是理念、设计和技术的结合。创新互联公司拥有的网站设计理念、多方位的设计风格、经验丰富的设计团队。提供PC端+手机端网站建设,用营销思维进行网站设计、采用先进技术开源代码、注重用户体验与SEO基础,将技术与创意整合到网站之中,以契合客户的方式做到创意性的视觉化效果。上周做了一个需求,要求将数据库保存的 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("html压缩"+e.getMessage(),e); }finally { //这是我写的IO流关闭工具类 如需要可以看我关于IO流关闭的文章 IOCloseUtils.ioClose(bw); } } //判断文件目录和文件是否存在 如否则新建 public void chenkFile(File file,String path){ try { if (file.exists()){//如果目录存在 if (!file.isDirectory()){//如果文件不存在 file.createNewFile();//创建文件 } }else {//如果目录不存在 File file1 = new File(path);//创建指定目录文件对象 file1.mkdirs();//创建目录 file.createNewFile();//创建文件 } } catch (IOException e) { log.error(e.getMessage(),e); } }