`
jxdiamond
  • 浏览: 101020 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

用java解压缩zip和rar的工具类

    博客分类:
  • java
 
阅读更多
package decompress;   
  
import java.io.File;   
import java.io.FileOutputStream;   
  
import org.apache.tools.ant.Project;   
import org.apache.tools.ant.taskdefs.Expand;   
  
import de.innosystec.unrar.Archive;   
import de.innosystec.unrar.rarfile.FileHeader;   
  
public class DeCompressUtil {   
   /**  
    * 解压zip格式压缩包  
    * 对应的是ant.jar  
    */  
   private static void unzip(String sourceZip,String destDir) throws Exception{   
       try{   
           Project p = new Project();   
           Expand e = new Expand();   
           e.setProject(p);   
           e.setSrc(new File(sourceZip));   
           e.setOverwrite(false);   
           e.setDest(new File(destDir));   
           /*  
           ant下的zip工具默认压缩编码为UTF-8编码,  
           而winRAR软件压缩是用的windows默认的GBK或者GB2312编码  
           所以解压缩时要制定编码格式  
           */  
           e.setEncoding("gbk");   
           e.execute();   
       }catch(Exception e){   
           throw e;   
       }   
   }   
   /**  
    * 解压rar格式压缩包。  
    * 对应的是java-unrar-0.3.jar,但是java-unrar-0.3.jar又会用到commons-logging-1.1.1.jar  
    */  
   private static void unrar(String sourceRar,String destDir) throws Exception{   
       Archive a = null;   
       FileOutputStream fos = null;   
       try{   
           a = new Archive(new File(sourceRar));   
           FileHeader fh = a.nextFileHeader();   
           while(fh!=null){   
               if(!fh.isDirectory()){   
                   //1 根据不同的操作系统拿到相应的 destDirName 和 destFileName   
                   String compressFileName = fh.getFileNameString().trim();   
                   String destFileName = "";   
                   String destDirName = "";   
                   //非windows系统   
                   if(File.separator.equals("/")){   
                       destFileName = destDir + compressFileName.replaceAll("\\\\", "/");   
                       destDirName = destFileName.substring(0, destFileName.lastIndexOf("/"));   
                   //windows系统    
                   }else{   
                       destFileName = destDir + compressFileName.replaceAll("/", "\\\\");   
                       destDirName = destFileName.substring(0, destFileName.lastIndexOf("\\"));   
                   }   
                   //2创建文件夹   
                   File dir = new File(destDirName);   
                   if(!dir.exists()||!dir.isDirectory()){   
                       dir.mkdirs();   
                   }   
                   //3解压缩文件   
                   fos = new FileOutputStream(new File(destFileName));   
                   a.extractFile(fh, fos);   
                   fos.close();   
                   fos = null;   
               }   
               fh = a.nextFileHeader();   
           }   
           a.close();   
           a = null;   
       }catch(Exception e){   
           throw e;   
       }finally{   
           if(fos!=null){   
               try{fos.close();fos=null;}catch(Exception e){e.printStackTrace();}   
           }   
           if(a!=null){   
               try{a.close();a=null;}catch(Exception e){e.printStackTrace();}   
           }   
       }   
   }   
   /**  
    * 解压缩  
    */  
   public static void deCompress(String sourceFile,String destDir) throws Exception{   
       //保证文件夹路径最后是"/"或者"\"   
       char lastChar = destDir.charAt(destDir.length()-1);   
       if(lastChar!='/'&&lastChar!='\\'){   
           destDir += File.separator;   
       }   
       //根据类型,进行相应的解压缩   
       String type = sourceFile.substring(sourceFile.lastIndexOf(".")+1);   
       if(type.equals("zip")){   
           DeCompressUtil.unzip(sourceFile, destDir);   
        }else if(type.equals("rar")){   
            DeCompressUtil.unrar(sourceFile, destDir);   
        }else{   
            throw new Exception("只支持zip和rar格式的压缩包!");   
        }   
    }   
} 
分享到:
评论

相关推荐

    JAVA解压缩ZIP或RAR格式的文件

    NULL 博文链接:https://hogwartsrow.iteye.com/blog/1853355

    详解java解压缩zip和rar的工具类使用教程

    详解java解压缩zip和rar的工具类使用教程直接上代码 package decompress;  import java.io.File;  import java.io.FileOutputStream;  import org.apache.tools.ant.Project;  import org.apache.tools.ant...

    java zip rar(区分有无密码的RAR文件) gz ftp工具类

    java项目中常使用到的工具类:zip压缩解压缩、rar解压(有密码的文件)、gz解压、FTP上传与下载

    java压缩文件解压缩和文件的压缩

    java 写的一个工具类可以用来解压缩zip,rar文件到指定的文件夹下

    java解压.zip或.jar文件.pdf

    在本篇文章中,我们将探讨 Java 解压缩文件的操作,包括解压缩 ZIP 和 JAR 文件,并讨论如何使用 Java 解压缩 RAR 文件。 解压缩 ZIP 和 JAR 文件 ZIP 和 JAR 文件是两种常见的压缩文件格式,Java 提供了 ...

    ZipUtil文件压缩工具类(解决中文乱码)

    java中使用ZipEntry对文件目录下的所有文件进行压缩,已解决中文乱码问题,亲测可用,请放心下载。

    java源码包JSP实例源码JAVA开发源码65个合集.zip

    用Java加密类实现DES、RSA及SHA的加密算法.rar 用jdom解析xml.rar 电子书店管理系统.rar 编译原理--LR(1)分析表构造(JAVA).rar 网上书店.rar 网络电视源代码TV-Browser.rar 网络蚂蚁Java版.rar 网页浏览器.rar ...

    java开源包8

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包11

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包6

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包4

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包9

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包101

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包5

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包10

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包1

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包3

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    JAVA上百实例源码以及开源项目源代码

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    JAVA上百实例源码以及开源项目

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    java开源包2

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

Global site tag (gtag.js) - Google Analytics