• Java代码中解压RAR文件


    1. [java] view plaincopy
       
      1. import java.io.File;  
      2. import java.io.FileOutputStream;  
      3.   
      4. import de.innosystec.unrar.Archive;  
      5. import de.innosystec.unrar.rarfile.FileHeader;  
      6.   
      7. public class UnRARTools {  
      8.   
      9.     public void unrar(File sourceRar, File destDir) throws Exception {  
      10.         Archive archive = null;  
      11.         FileOutputStream fos = null;  
      12.         System.out.println("Starting...");  
      13.         try {  
      14.             archive = new Archive(sourceRar);  
      15.             FileHeader fh = archive.nextFileHeader();  
      16.             int count = 0;  
      17.             File destFileName = null;  
      18.             while (fh != null) {  
      19.                 System.out.println((++count) + ") " + fh.getFileNameString());  
      20.                 String compressFileName = fh.getFileNameString().trim();  
      21.                 destFileName = new File(destDir.getAbsolutePath() + "/" + compressFileName);  
      22.                 if (fh.isDirectory()) {  
      23.                     if (!destFileName.exists()) {  
      24.                         destFileName.mkdirs();  
      25.                     }  
      26.                     fh = archive.nextFileHeader();  
      27.                     continue;  
      28.                 }   
      29.                 if (!destFileName.getParentFile().exists()) {  
      30.                     destFileName.getParentFile().mkdirs();  
      31.                 }  
      32.                 fos = new FileOutputStream(destFileName);  
      33.                 archive.extractFile(fh, fos);  
      34.                 fos.close();  
      35.                 fos = null;  
      36.                 fh = archive.nextFileHeader();  
      37.             }  
      38.   
      39.             archive.close();  
      40.             archive = null;  
      41.             System.out.println("Finished !");  
      42.         } catch (Exception e) {  
      43.             throw e;  
      44.         } finally {  
      45.             if (fos != null) {  
      46.                 try {  
      47.                     fos.close();  
      48.                     fos = null;  
      49.                 } catch (Exception e) {  
      50.                     //ignore  
      51.                 }  
      52.             }  
      53.             if (archive != null) {  
      54.                 try {  
      55.                     archive.close();  
      56.                     archive = null;  
      57.                 } catch (Exception e) {  
      58.                     //ignore  
      59.                 }  
      60.             }  
      61.         }  
      62.     }  
      63.   
      64. }  

      需要引用到以下两个lib.
      java-unrar-0.5.jar
      http://www.java2s.com/Code/JarDownload/java/java-unrar-0.5.jar.zip
      apache-commons-logging.jar
      http://www.java2s.com/Code/JarDownload/apache-commons/apache-commons-logging.jar.zip

  • 相关阅读:
    win10下安装虚拟环境
    apache的rewrite重写、日志切割、防盗链
    apache的虚拟主机配置
    springboot 框架下对象使用时new()和注解注入的区别
    当new()发生时,代码初始化顺序
    爬虫----设置代理HttpClientDownloader
    爬虫:HttpClient Jsoup 爬虫学习
    爬虫webmagic入门学习
    爬虫使用的simhash网页去重算法-----项目改造使用-----java.lang.IllegalStateException: TokenStream contract violation: reset()/close()问题
    JAVA 基本类型与其封装类及两者与String的转换
  • 原文地址:https://www.cnblogs.com/yuanjun1/p/3929971.html
Copyright © 2020-2023  润新知