zoukankan      html  css  js  c++  java
  • Java实现对zip和rar文件的解压缩

    通过java实现对zip和rar文件的解压缩

    package com.svse.test;

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Enumeration;

    import org.apache.tools.zip.ZipEntry;
    import org.apache.tools.zip.ZipFile;

    import de.innosystec.unrar.Archive;
    import de.innosystec.unrar.rarfile.FileHeader;
    /**
    * zip和rar解压缩工具类
    * @author lenovo
    *
    */
    public class ZipAndRarTools {

     /**
     * 解压rar
     * @param sourceRarPath 需要解压的rar文件全路径
     * @param destDirPath 需要解压到的文件目录
     * @throws Exception
     */
      public static void unrar(String sourceRarPath, String destDirPath) throws Exception { 
       File sourceRar=new File(sourceRarPath);
      File destDir=new File(destDirPath);
      Archive archive = null
      FileOutputStream fos = null
      System.out.println("Starting 开始解压..."); 
      try
        archive = new Archive(sourceRar); 
        FileHeader fh = archive.nextFileHeader(); 
        int count = 0; 
        File destFileName = null
        while (fh != null) { 
          System.out.println((++count) + ") " + fh.getFileNameString()); 
          String compressFileName = fh.getFileNameString().trim(); 
          destFileName = new File(destDir.getAbsolutePath() + "/" + compressFileName); 
          if (fh.isDirectory()) { 
            if (!destFileName.exists()) { 
              destFileName.mkdirs(); 
              } 
            fh = archive.nextFileHeader(); 
            continue
            } 
          if (!destFileName.getParentFile().exists()) { 
            destFileName.getParentFile().mkdirs(); 
            }


          fos = new FileOutputStream(destFileName); 
          archive.extractFile(fh, fos); 
          fos.close(); 
          fos = null
          fh = archive.nextFileHeader(); 
          } 

          archive.close(); 
          archive = null
          System.out.println("Finished 解压完成!"); 
         } catch (Exception e) { 
             throw e; 
          } finally
           if (fos != null) { 
             try
              fos.close(); 
              fos = null
            } catch (Exception e) { 
           } 
         } 
         if (archive != null) { 
          try
            archive.close(); 
            archive = null
         } catch (Exception e) { 
         } 
        } 
       } 
     } 


     /** 
     * 解压Zip文件 
     * @param zipFileName 需要解压缩的文件位置
     * @param descFileName 将文件解压到某个路径
     * @throws IOException 
     */ 
      public static void unZip(String zipFileName,String descFileName) throws IOException{  
        System.out.println("文件解压开始...");
        String descFileNames=descFileName;
        if(!descFileNames.endsWith(File.separator)){
          descFileNames=descFileNames+File.separator;
        }
       try {
          ZipFile zipFile=new ZipFile(zipFileName);
          ZipEntry entry=null;
        String entryName=null;
        String descFileDir=null;
        byte[] buf=new byte[4096];
        int readByte=0;
        @SuppressWarnings("rawtypes")
        Enumeration enums=zipFile.getEntries();
        while(enums.hasMoreElements()){
          entry =(ZipEntry) enums.nextElement();
          entryName=entry.getName();
          descFileDir=descFileNames+entryName;
          if(entry.isDirectory()){
             new File(descFileDir).mkdir();
             continue;
          }else{
            new File(descFileDir).getParentFile().mkdir();
              }
           File file=new File(descFileDir);
         OutputStream os=new FileOutputStream(file);
         InputStream is=zipFile.getInputStream(entry);
            while((readByte=is.read(buf))!=-1){
              os.write(buf, 0, readByte);
            }
              os.close();
              is.close();
           }
             zipFile.close();
             System.out.println("文件解压成功!");
        } catch (Exception e) {
           System.out.println("文件解压失败!");
           e.printStackTrace();
        }

       } 

       public static void main(String[] args) throws Exception {
          //ZipAndRarTools.unrar(newFile("D:\存放资料的压缩包\员工材料.rar"),newFile("D:\存放资料的非压缩包\"));

         ZipAndRarTools.unZip("D:\rarTest\jar包和配置文件资源.zip", "D:\rarTest");
         ZipAndRarTools.unrar("D:\rarTest\rar压缩包.rar", "D:\rarTest");

        }

    }

  • 相关阅读:
    DELPHI中GetTickCount 函数的应用
    Delphi 中 StrToIntDef 函数的应用
    TeeChart 动态建曲线
    历遍指定文件夹下的文件
    DELPHI 获取错误信息
    delphi播放flash
    C# 获取当前路径方法
    DELPHI 修改系统分辨率
    SQL字符串处理函数 Yang
    Linux基本操作 Yang
  • 原文地址:https://www.cnblogs.com/zhaosq/p/9777216.html
Copyright © 2011-2022 走看看