首页 > 编程 > Java > 正文

Java解压zip文件完整代码分享

2019-11-26 10:59:00
字体:
来源:转载
供稿:网友

关于Java解压zip文件,我觉得也没啥好多说的,就是干呗。。代码如下:

package com.lanyuan.assembly.util;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.Enumeration;import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipFile;/**  * 解压Zip文件工具类  * @author zhangyongbo  *  */ public class ZipUtil{  private static final int buffer = 2048;  /**   * 解压Zip文件   * @param path 文件目录   */  public static void unZip(String path)    {     int count = -1;     String savepath = "";     File file = null;     InputStream is = null;     FileOutputStream fos = null;     BufferedOutputStream bos = null;     savepath = path.substring(0, path.lastIndexOf(".")) + File.separator; //保存解压文件目录     new File(savepath).mkdir(); //创建保存目录     ZipFile zipFile = null;     try     {       zipFile = new ZipFile(path,"gbk"); //解决中文乱码问题       Enumeration<?> entries = zipFile.getEntries();       while(entries.hasMoreElements())       {         byte buf[] = new byte[buffer];         ZipEntry entry = (ZipEntry)entries.nextElement();         String filename = entry.getName();         boolean ismkdir = false;         if(filename.lastIndexOf("/") != -1){ //检查此文件是否带有文件夹          ismkdir = true;         }         filename = savepath + filename;         if(entry.isDirectory()){ //如果是文件夹先创建          file = new File(filename);          file.mkdirs();           continue;         }         file = new File(filename);         if(!file.exists()){ //如果是目录先创建          if(ismkdir){          new File(filename.substring(0, filename.lastIndexOf("/"))).mkdirs(); //目录先创建          }         }         file.createNewFile(); //创建文件         is = zipFile.getInputStream(entry);         fos = new FileOutputStream(file);         bos = new BufferedOutputStream(fos, buffer);         while((count = is.read(buf)) > -1)         {           bos.write(buf, 0, count);         }         bos.flush();         bos.close();         fos.close();         is.close();       }       zipFile.close();     }catch(IOException ioe){       ioe.printStackTrace();     }finally{        try{        if(bos != null){          bos.close();        }        if(fos != null) {          fos.close();        }        if(is != null){          is.close();        }        if(zipFile != null){          zipFile.close();        }        }catch(Exception e) {          e.printStackTrace();        }      }    } /*public static void main(String[] args)   {     unZip("F://110000002.zip");     String f = "F://110000002";    File file = new File(f);    String[] test=file.list();    for(int i=0;i<test.length;i++){      System.out.println(test[i]);    }    System.out.println("------------------");    String fileName = "";    File[] tempList = file.listFiles();    for (int i = 0; i < tempList.length; i++) {      if (tempList[i].isFile()) {        System.out.println("文   件:"+tempList[i]);        fileName = tempList[i].getName();        System.out.println("文件名:"+fileName);      }      if (tempList[i].isDirectory()) {        System.out.println("文件夹:"+tempList[i]);      }    }  } */}

上面是第一种的代码示例,接着是另外一种,代码如下:

import java.io.*;import java.nio.charset.Charset;import java.util.Enumeration;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;/** * Created by wzj on 2016/9/9. */public class UZipFile{  /**   * 解压到指定目录   */  public static void unZipFiles(String zipPath,String descDir)throws IOException  {    unZipFiles(new File(zipPath), descDir);  }  /**   * 解压文件到指定目录   */  @SuppressWarnings("rawtypes")  public static void unZipFiles(File zipFile,String descDir)throws IOException  {    File pathFile = new File(descDir);    if(!pathFile.exists())    {      pathFile.mkdirs();    }    //解决zip文件中有中文目录或者中文文件    ZipFile zip = new ZipFile(zipFile, Charset.forName("GBK"));    for(Enumeration entries = zip.entries(); entries.hasMoreElements();)    {      ZipEntry entry = (ZipEntry)entries.nextElement();      String zipEntryName = entry.getName();      InputStream in = zip.getInputStream(entry);      String outPath = (descDir+zipEntryName).replaceAll("//*", "/");;      //判断路径是否存在,不存在则创建文件路径      File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));      if(!file.exists())      {        file.mkdirs();      }      //判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压      if(new File(outPath).isDirectory())      {        continue;      }      //输出文件路径信息      System.out.println(outPath);      OutputStream out = new FileOutputStream(outPath);      byte[] buf1 = new byte[1024];      int len;      while((len=in.read(buf1))>0)      {        out.write(buf1,0,len);      }      in.close();      out.close();    }    System.out.println("******************解压完毕********************");  }  public static void main(String[] args) throws IOException {    /**     * 解压文件     */    File zipFile = new File("d:/资料.zip");    String path = "d:/zipfile/";    unZipFiles(zipFile, path);  }}

测试结果

d:/zipfile/资料/三大框架所有题.htmd:/zipfile/资料/三大框架所有题_files/bootstrap.cssd:/zipfile/资料/三大框架所有题_files/bootstrap.jsd:/zipfile/资料/三大框架所有题_files/css_global.cssd:/zipfile/资料/三大框架所有题_files/jquery.jsd:/zipfile/资料/三大框架所有题_files/logo.pngd:/zipfile/资料/三大框架所有题_files/scripts(1).phpd:/zipfile/资料/三大框架所有题_files/scripts(2).phpd:/zipfile/资料/三大框架所有题_files/scripts.jsd:/zipfile/资料/三大框架所有题_files/scripts.phpd:/zipfile/资料/三大框架所有题_files/transparent.gifd:/zipfile/资料/回顾.txtd:/zipfile/资料/源码/day29_00_struts2Interceptor/.classpathd:/zipfile/资料/源码/day29_00_struts2Interceptor/.mymetadatad:/zipfile/资料/源码/day29_00_struts2Interceptor/.projectd:/zipfile/资料/源码/day29_00_struts2Interceptor/.settings/.jsdtscoped:/zipfile/资料/源码/day29_00_struts2Interceptor/.settings/com.genuitec.eclipse.j2eedt.core.prefsd:/zipfile/资料/源码/day29_00_struts2Interceptor/.settings/org.eclipse.jdt.core.prefsd:/zipfile/资料/源码/day29_00_struts2Interceptor/.settings/org.eclipse.wst.common.componentd:/zipfile/资料/源码/day29_00_struts2Interceptor/.settings/org.eclipse.wst.common.project.facet.core.xmld:/zipfile/资料/源码/day29_00_struts2Interceptor/.settings/org.eclipse.wst.jsdt.ui.superType.containerd:/zipfile/资料/源码/day29_00_struts2Interceptor/.settings/org.eclipse.wst.jsdt.ui.superType.named:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/1.jspd:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/META-INF/MANIFEST.MFd:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/WEB-INF/classes/com/itheima/action/Demo1Action.classd:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/WEB-INF/classes/com/itheima/action/UserAction.classd:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/WEB-INF/classes/com/itheima/interceptors/Demo1Interceptor.classd:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/WEB-INF/classes/com/itheima/interceptors/LoginCheckInterceptor.classd:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/WEB-INF/classes/struts.xmld:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/asm-3.3.jard:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/asm-commons-3.3.jard:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/asm-tree-3.3.jard:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/commons-fileupload-1.3.jard:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/commons-io-2.0.1.jard:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/commons-lang3-3.1.jard:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/commons-logging-1.1.3.jard:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/freemarker-2.3.19.jard:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/javassist-3.11.0.GA.jard:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/log4j-1.2.17.jard:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/ognl-3.0.6.jard:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/struts2-core-2.3.15.3.jard:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/WEB-INF/lib/xwork-core-2.3.15.3.jard:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/WEB-INF/web.xmld:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/index.jspd:/zipfile/资料/源码/day29_00_struts2Interceptor/WebRoot/login.jspd:/zipfile/资料/源码/day29_00_struts2Interceptor/src/com/itheima/action/Demo1Action.javad:/zipfile/资料/源码/day29_00_struts2Interceptor/src/com/itheima/action/UserAction.javad:/zipfile/资料/源码/day29_00_struts2Interceptor/src/com/itheima/interceptors/Demo1Interceptor.javad:/zipfile/资料/源码/day29_00_struts2Interceptor/src/com/itheima/interceptors/LoginCheckInterceptor.javad:/zipfile/资料/源码/day29_00_struts2Interceptor/src/struts.xmld:/zipfile/资料/源码/day29_01_struts2Upload/.classpathd:/zipfile/资料/源码/day29_01_struts2Upload/.mymetadatad:/zipfile/资料/源码/day29_01_struts2Upload/.projectd:/zipfile/资料/源码/day29_01_struts2Upload/.settings/.jsdtscoped:/zipfile/资料/源码/day29_01_struts2Upload/.settings/com.genuitec.eclipse.j2eedt.core.prefsd:/zipfile/资料/源码/day29_01_struts2Upload/.settings/org.eclipse.jdt.core.prefsd:/zipfile/资料/源码/day29_01_struts2Upload/.settings/org.eclipse.wst.common.componentd:/zipfile/资料/源码/day29_01_struts2Upload/.settings/org.eclipse.wst.common.project.facet.core.xmld:/zipfile/资料/源码/day29_01_struts2Upload/.settings/org.eclipse.wst.jsdt.ui.superType.containerd:/zipfile/资料/源码/day29_01_struts2Upload/.settings/org.eclipse.wst.jsdt.ui.superType.named:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/1.jspd:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/2.jspd:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/META-INF/MANIFEST.MFd:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/WEB-INF/classes/com/itheima/action/DownloadAction.classd:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/WEB-INF/classes/com/itheima/action/Upload1Action.classd:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/WEB-INF/classes/com/itheima/action/Upload1Action_zh_CN.propertiesd:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/WEB-INF/classes/com/itheima/action/Upload2Action.classd:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/WEB-INF/classes/struts.xmld:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/WEB-INF/classes/美女.jpgd:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/WEB-INF/lib/asm-3.3.jard:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/WEB-INF/lib/asm-commons-3.3.jard:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/WEB-INF/lib/asm-tree-3.3.jard:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/WEB-INF/lib/commons-fileupload-1.3.jard:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/WEB-INF/lib/commons-io-2.0.1.jard:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/WEB-INF/lib/commons-lang3-3.1.jard:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/WEB-INF/lib/commons-logging-1.1.3.jard:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/WEB-INF/lib/freemarker-2.3.19.jard:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/WEB-INF/lib/javassist-3.11.0.GA.jard:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/WEB-INF/lib/log4j-1.2.17.jard:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/WEB-INF/lib/ognl-3.0.6.jard:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/WEB-INF/lib/struts2-core-2.3.15.3.jard:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/WEB-INF/lib/xwork-core-2.3.15.3.jard:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/WEB-INF/web.xmld:/zipfile/资料/源码/day29_01_struts2Upload/WebRoot/success.jspd:/zipfile/资料/源码/day29_01_struts2Upload/src/com/itheima/action/DownloadAction.javad:/zipfile/资料/源码/day29_01_struts2Upload/src/com/itheima/action/Upload1Action.javad:/zipfile/资料/源码/day29_01_struts2Upload/src/com/itheima/action/Upload1Action_zh_CN.propertiesd:/zipfile/资料/源码/day29_01_struts2Upload/src/com/itheima/action/Upload2Action.javad:/zipfile/资料/源码/day29_01_struts2Upload/src/struts.xmld:/zipfile/资料/源码/day29_01_struts2Upload/src/美女.jpgd:/zipfile/资料/源码/day29_02_struts2ognl/.classpathd:/zipfile/资料/源码/day29_02_struts2ognl/.mymetadatad:/zipfile/资料/源码/day29_02_struts2ognl/.projectd:/zipfile/资料/源码/day29_02_struts2ognl/.settings/.jsdtscoped:/zipfile/资料/源码/day29_02_struts2ognl/.settings/com.genuitec.eclipse.j2eedt.core.prefsd:/zipfile/资料/源码/day29_02_struts2ognl/.settings/org.eclipse.jdt.core.prefsd:/zipfile/资料/源码/day29_02_struts2ognl/.settings/org.eclipse.wst.common.componentd:/zipfile/资料/源码/day29_02_struts2ognl/.settings/org.eclipse.wst.common.project.facet.core.xmld:/zipfile/资料/源码/day29_02_struts2ognl/.settings/org.eclipse.wst.jsdt.ui.superType.containerd:/zipfile/资料/源码/day29_02_struts2ognl/.settings/org.eclipse.wst.jsdt.ui.superType.named:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/1.jspd:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/2.jspd:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/3.jspd:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/4.jspd:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/5.jspd:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/6.jspd:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/7.jspd:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/META-INF/MANIFEST.MFd:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/WEB-INF/classes/com/itheima/action/Demo1Action.classd:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/WEB-INF/classes/com/itheima/action/Demo2Action.classd:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/WEB-INF/classes/com/itheima/action/Demo3Action.classd:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/WEB-INF/classes/com/itheima/domain/User.classd:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/WEB-INF/classes/struts.xmld:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/WEB-INF/lib/asm-3.3.jard:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/WEB-INF/lib/asm-commons-3.3.jard:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/WEB-INF/lib/asm-tree-3.3.jard:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/WEB-INF/lib/commons-fileupload-1.3.jard:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/WEB-INF/lib/commons-io-2.0.1.jard:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/WEB-INF/lib/commons-lang3-3.1.jard:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/WEB-INF/lib/commons-logging-1.1.3.jard:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/WEB-INF/lib/freemarker-2.3.19.jard:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/WEB-INF/lib/javassist-3.11.0.GA.jard:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/WEB-INF/lib/log4j-1.2.17.jard:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/WEB-INF/lib/ognl-3.0.6.jard:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/WEB-INF/lib/struts2-core-2.3.15.3.jard:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/WEB-INF/lib/xwork-core-2.3.15.3.jard:/zipfile/资料/源码/day29_02_struts2ognl/WebRoot/WEB-INF/web.xmld:/zipfile/资料/源码/day29_02_struts2ognl/src/com/itheima/action/Demo1Action.javad:/zipfile/资料/源码/day29_02_struts2ognl/src/com/itheima/action/Demo2Action.javad:/zipfile/资料/源码/day29_02_struts2ognl/src/com/itheima/action/Demo3Action.javad:/zipfile/资料/源码/day29_02_struts2ognl/src/com/itheima/domain/User.javad:/zipfile/资料/源码/day29_02_struts2ognl/src/struts.xmld:/zipfile/资料/课堂笔记.doc******************解压完毕********************

总结

以上就是Java解压zip文件完整代码分享的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Java编程接口调用的作用及代码分享java并发学习之BlockingQueue实现生产者消费者详解浅谈java中字符串数组、字符串、整形之间的转换等,有什么问题可以随时留言,小编会及时回复大家的。感谢朋友们对本站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表