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