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

Nissa ·
更新时间:2024-09-21
· 627 次阅读

详解java解压缩zip和rar的工具类使用教程直接上代码 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 工具 rar zip 教程

需要 登录 后方可回复, 如果你还没有账号请 注册新账号