java zip 打包
Posted chengyangyang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java zip 打包相关的知识,希望对你有一定的参考价值。
package com.sxmd.utils; import com.sxmd.exception.SxmdException; import lombok.extern.slf4j.Slf4j; import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; /** * Description: 打包工具类 * * @author cy * @date 2019年07月30日 21:15 * version 1.0 */ @Slf4j public class ZipUtil private ZipUtil() /** * 创建ZIP文件 * @param sourcePath 文件或文件夹路径 * @param zipPath 生成的zip文件存在路径(包括文件名) * @param isDrop 是否删除原文件:true删除、false不删除 */ public static boolean createZip(String sourcePath, String zipPath,Boolean isDrop) boolean flag = true; FileOutputStream fos = null; ZipOutputStream zos = null; try fos = new FileOutputStream(zipPath); zos = new ZipOutputStream(fos); writeZip(new File(sourcePath), "", zos,isDrop); catch (Exception e) flag = false; log.error("创建ZIP文件失败",e); finally try if (zos != null) zos.close(); catch (IOException e) log.error("流关闭失败",e); return flag; /** * 清空文件和文件目录 * * @param f */ public static void clean(File f) String[] cs = f.list(); if (cs == null || cs.length <= 0) log.debug("delFile:[ " + f + " ]"); boolean isDelete = f.delete(); if (!isDelete) log.error("delFile:[ " + f.getName() + "文件删除失败!" + " ]"); throw new SxmdException(f.getName() + "文件删除失败!"); else for (int i = 0; i < cs.length; i++) String cn = cs[i]; String cp = f.getPath() + File.separator + cn; File f2 = new File(cp); if (f2.exists() && f2.isFile()) log.error("delFile:[ " + f2 + " ]"); boolean isDelete = f2.delete(); if (!isDelete) System.out.println("delFile:[ " + f2.getName() + "文件删除失败!" + " ]"); throw new SxmdException(f2.getName() + "文件删除失败!"); else if (f2.exists() && f2.isDirectory()) clean(f2); System.out.println("delFile:[ " + f + " ]"); boolean isDelete = f.delete(); if (!isDelete) System.out.println("delFile:[ " + f.getName() + "文件删除失败!" + " ]"); throw new SxmdException(f.getName() + "文件删除失败!"); private static void writeZip(File file, String parentPath, ZipOutputStream zos,Boolean isDrop) if(file.exists()) // 处理文件夹 if(file.isDirectory()) parentPath+=file.getName()+File.separator; File [] files=file.listFiles(); if(files.length != 0) for(File f:files) writeZip(f, parentPath, zos,isDrop); else //空目录则创建当前目录 try zos.putNextEntry(new ZipEntry(parentPath)); catch (IOException e) // TODO Auto-generated catch block e.printStackTrace(); else FileInputStream fis=null; try fis=new FileInputStream(file); ZipEntry ze = new ZipEntry(parentPath + file.getName()); zos.putNextEntry(ze); byte [] content=new byte[1024]; int len; while((len=fis.read(content))!=-1) zos.write(content,0,len); zos.flush(); catch (FileNotFoundException e) log.error("创建ZIP文件失败",e); catch (IOException e) log.error("创建ZIP文件失败",e); finally try if(fis!=null) fis.close(); if(isDrop) clean(file); catch(IOException e) log.error("创建ZIP文件失败",e); catch (Exception e) e.printStackTrace(); public static void main(String[] args) System.out.println(createZip("E:\\sxmd_plug_log","E:\\a.zip",false));
以上是关于java zip 打包的主要内容,如果未能解决你的问题,请参考以下文章