文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java如何解压zip文件

2023-05-30 22:34

关注

小编给大家分享一下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文件”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯