025下载文件夹打包zip

编程入门 行业动态 更新时间:2024-10-16 22:13:32

025下载<a href=https://www.elefans.com/category/jswz/34/1771393.html style=文件夹打包zip"/>

025下载文件夹打包zip

pp一.调用主方法填入参数

/***stayPath:压缩文件地址*compressPath:压缩后存储地址*true/false:是否在压缩文件里创建目录,仅在压缩文件为目录时有效,如果为false,将直接压缩目录下文件            *            到压缩文件. *passwd:压缩使用的密码***/ZipUtil.zip( stayPath,compressPath,true,passwd);

二.引入pom文件

<dependency><groupId>net.lingala</groupId><artifactId>zip4j</artifactId><version>1.3.3</version>
</dependency>

三.压缩主要方法

package cn.goldwind.ercp.fems.business.deliverables.service;
import java.io.File;
import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.model.ZipParameters;
import org.apachemons.lang3.StringUtils;/*** 压缩文件夹成zip格式** */
public class ZipUtil {/** * 使用给定密码压缩指定文件或文件夹到指定位置. * <p> * dest可传最终压缩文件存放的绝对路径,也可以传存放目录,也可以传null或者"".<br /> * 如果传null或者""则将压缩文件存放在当前目录,即跟源文件同目录,压缩文件名取源文件名,以.zip为后缀;<br /> * 如果以路径分隔符(File.separator)结尾,则视为目录,压缩文件名取源文件名,以.zip为后缀,否则视为文件名. * @param src 要压缩的文件或文件夹路径 * @param dest 压缩文件存放路径 * @param isCreateDir 是否在压缩文件里创建目录,仅在压缩文件为目录时有效.<br /> * 如果为false,将直接压缩目录下文件到压缩文件. * @param passwd 压缩使用的密码 * @return 最终的压缩文件存放的绝对路径,如果为null则说明压缩失败. */public static String zip(String src, String dest, boolean isCreateDir, String passwd) throws Exception {File srcFile = new File(src);dest = buildDestinationZipFilePath(srcFile, dest);ZipParameters parameters = new ZipParameters();parameters.setCompressionMethod(8);parameters.setCompressionLevel(5);if (!StringUtils.isEmpty(passwd)) {parameters.setEncryptFiles(true);parameters.setEncryptionMethod(0);parameters.setPassword(passwd.toCharArray());} try {ZipFile zipFile = new ZipFile(dest);if (srcFile.isDirectory()) {if (!isCreateDir) {File[] subFiles = srcFile.listFiles();if (subFiles != null && subFiles.length > 0)for (File f : subFiles) {if (f.isDirectory()) {zipFile.addFolder(f, parameters);} else {zipFile.addFile(f, parameters);} }  return dest;} zipFile.addFolder(srcFile, parameters);} else {zipFile.addFile(srcFile, parameters);} } catch (ZipException e) {throw e;} return dest;}private static String buildDestinationZipFilePath(File srcFile, String destParam) {if (StringUtils.isEmpty(destParam)) {if (srcFile.isDirectory()) {destParam = srcFile.getParent() + File.separator + srcFile.getName() + ".zip";} else {String fileName = srcFile.getName().substring(0, srcFile.getName().lastIndexOf("."));destParam = srcFile.getParent() + File.separator + fileName + ".zip";} } else {createDestDirectoryIfNecessary(destParam);if (destParam.endsWith(File.separator)) {String fileName = "";if (srcFile.isDirectory()) {fileName = srcFile.getName();} else {fileName = srcFile.getName().substring(0, srcFile.getName().lastIndexOf("."));} destParam = destParam + fileName + ".zip";} } return destParam;}private static void createDestDirectoryIfNecessary(String destParam) {File destDir = null;if (destParam.endsWith(File.separator)) {destDir = new File(destParam);} else {destDir = new File(destParam.substring(0, destParam.lastIndexOf(File.separator)));} if (!destDir.exists())destDir.mkdirs(); }
}

四.下载

 /*** 导出名称:交付物文件.zip* 文件地址:compressPath + "交付物文件.zip"* */this.outputStream(response,"交付物文件.zip",compressPath + "交付物文件.zip");

五.导出文件

/*** 导出文件* @param response* @param fileName:导出附件名称* @param filePath:导出附件目标地址*/private void outputStream(HttpServletResponse response, String fileName, String filePath) {BufferedInputStream br = null;BufferedOutputStream out = null;try {// 将excel放入输出流推出OutputStream os = response.getOutputStream();out = new BufferedOutputStream(os);// fileDownload插件以此判断下载是否成功,不设置则不执行成功回调函数response.setHeader("Set-Cookie", "fileDownload=true; path=/");// 设置文件类型response.setHeader("content-type", "application/octet-stream");response.setContentType("application/zip");fileName = URLEncoder.encode(fileName, "UTF-8");response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("gb2312"), "ISO8859-1"));//读取文件br = new BufferedInputStream(new FileInputStream(new File(filePath)));byte[] buf = new byte[1024];int len = 0;while ((len = br.read(buf)) > 0) {out.write(buf, 0, len);}} catch (IOException e) {logger.error(e.getMessage(), e);} finally {if (br != null) {try {br.close();} catch (IOException e) {logger.error("zip文件流读取失败:", e.getMessage());}}if (out != null) {try {out.flush();out.close();} catch (IOException e) {logger.error("输出流关闭失败:", e.getMessage());}}}}

六.文件删除、文件夹删除

// 删除临时文件
this.delFile(fileCre);// 删除临时文件.zip
File fileZip = new File(fasConstant.getValue(FasConstant.FILEPATH) + "交付物文件.zip");/**** 删除文件夹下所有文件(包括子目录内的文件)*/public static boolean delFile(File file) {//判断文件不为null或文件目录存在if (file == null || !file.exists()) {System.out.println("文件删除失败,请检查文件路径是否正确");return false;}//取得这个目录下的所有子文件对象File[] files = file.listFiles();//遍历该目录下的文件对象for (File f : files) {//打印文件名String name = file.getName();System.out.println(name);//判断子目录是否存在子目录,如果是文件则删除if (f.isDirectory()) {delFile(f);} else {f.delete();}}//删除空文件夹  for循环已经把上一层节点的目录清空。return file.delete();}

更多推荐

025下载文件夹打包zip

本文发布于:2024-02-07 03:04:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1752817.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文件夹   zip

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!