iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java如何解压zip文件
  • 641
分享到

Java如何解压zip文件

javazip 2023-05-30 22:05:43 641人浏览 八月长安
摘要

小编给大家分享一下Java如何解压zip文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!代码如下:package com.lanyuan.assemb

小编给大家分享一下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; public class ZipUtil{  private static final int buffer = 2048;    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();        }      }    } }

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

import java.io.*;import java.NIO.charset.Charset;import java.util.Enumeration;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;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文件”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Java如何解压zip文件

本文链接: https://www.lsjlt.com/news/221690.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作