package com.thtf.zwdsj.fangjia.utils; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; /** * @创建人 qinyangyang * @创建时间 2022/11/7 * @描述 */ public class FileUtil { /** * 功能:压缩多个文件,输出压缩后的zip文件流 * * @param sourcePath:源文件路径 * @param zipFileName:压缩后的文件名 * @param response: Http响应 */ public static void zipFiles(String sourcePath, String zipFileName, HttpServletResponse response) throws IOException { File[] files = new File(sourcePath).listFiles(); byte[] buf = new byte[1024]; // 获取输出流 BufferedOutputStream bos = null; try { bos = new BufferedOutputStream(response.getOutputStream()); } catch (IOException e) { e.printStackTrace(); } FileInputStream in = null; ZipOutputStream out = null; try { response.reset(); // 重点突出 // 不同类型的文件对应不同的MIME类型 response.setContentType("application/x-msdownload"); response.setCharacterEncoding("utf-8"); response.setHeader("Content-disposition", "attachment;filename=" + zipFileName + ".zip"); // ZipOutputStream类:完成文件或文件夹的压缩 out = new ZipOutputStream(bos); for (int i = 0; i < files.length; i++) { in = new FileInputStream(files[i]); // 给列表中的文件单独命名 out.putNextEntry(new ZipEntry(files[i].getName())); int len = -1; while ((len = in.read(buf)) != -1) { out.write(buf, 0, len); } } System.out.println("压缩完成."); } catch (Exception e) { e.printStackTrace(); } finally { if (in != null) { in.close(); } if (bos != null) { bos.flush(); bos.close(); } if (out != null) { out.flush(); out.close(); } } } public static void deleteFile(File file) { File[] files = file.listFiles(); if (files != null) {//如果包含文件进行删除操作 for (int i = 0; i < files.length; i++) { if (files[i].isFile()) { //删除子文件 files[i].delete(); } else if (files[i].isDirectory()) { //通过递归的方法找到子目录的文件 deleteFile(files[i]); } files[i].delete();//删除子目录 } } } }
标签:files,bos,new,null,response,FileUtil,out From: https://www.cnblogs.com/chenTo/p/16883996.html