`
Sharpleo
  • 浏览: 573873 次
  • 性别: Icon_minigender_1
  • 来自: newsk
社区版块
存档分类
最新评论

java解压缩文件

    博客分类:
  • java
 
阅读更多
package com.kingschan.util.zip;   
  
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;   
  /**
   * DeCompress Util class
   * @author kingschan
   *date:2013-6-9
   */
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")||type.equals("jar")){   
	           DeCompressUtil.unzip(sourceFile, destDir);   
	        }else if(type.equals("rar")){   
	            DeCompressUtil.unrar(sourceFile, destDir);   
	        }else{   
	            throw new Exception("only support jar zip or rar file ...");   
	        }   
	    }   
	   
	  
} 
分享到:
评论

相关推荐

    java 解压缩文件

    ### Java 解压缩文件知识点 #### 一、Java压缩与解压技术概述 在Java中,进行文件的压缩和解压通常涉及到多个类库和技术。这些技术不仅能够帮助开发者有效地管理和处理大量的数据,还能够在网络传输过程中减少带宽...

    Java解压缩文件,尤其对于Rar5.0版本的解压实现.zip

    沙漏哦2022-09-16 16:00:57原证Java解压缩文件,尤其对于Rar5.0版本的解压实现 项目描述 junrar已经不再支持Rar5版本的压缩文件。sevenzipjbinding对于Rar5压缩包的解压是调用本地7z软件进行解压的,如果本机环境...

    java解压缩文件支持中文

    java解压缩文件支持中文,经过测试,可执行,项目中正在应用

    java 解压缩文件的实现示例,支持 rar 和 zip 格式

    java 解压缩文件的实现示例,支持 rar 和 zip 格式

    java解压缩文件文件夹

    在Java编程语言中,处理文件压缩与解压缩是常见的任务,尤其在数据传输、存储优化或者备份场景下。本文将详细讲解如何使用Java实现文件和文件夹的压缩以及解压缩功能。 首先,Java标准库提供了`java.util.zip`包,...

    JAVA文件压缩与解压缩实践(源代码+论文)

    在Java编程语言中,文件的压缩与解压缩是常见的数据处理操作,特别是在数据传输、存储优化和备份场景中。本实践项目围绕这个主题展开,包括源代码和相关的论文,为学习者提供了深入理解和应用Java压缩库的机会。以下...

    java 解压缩zip文件

    在Java编程语言中,解压缩ZIP文件是一项常见的任务,特别是在处理数据传输、文件打包和部署等场景下。本文将深入探讨如何使用Java API来解压缩ZIP文件,包括基本概念、核心类库以及具体实现步骤。 ZIP文件是一种...

    java自动解压缩文件

    Java自动解压缩文件是编程领域中的一个重要话题,尤其是在服务器端应用中,经常需要处理上传的压缩文件并进行解压操作。Java提供了丰富的API来支持这一功能,主要涉及到`java.util.zip`包中的类,如`ZipInputStream`...

    JAVA文件压缩与解压缩实践,java解压缩zip文件,Java源码.zip

    3. **解压缩文件** 解压ZIP文件则需要一个`ZipInputStream`实例,它包装在一个`FileInputStream`中,指向ZIP文件。通过调用`getNextEntry`方法,你可以逐个访问ZIP文件中的每个条目,然后创建相应的文件或目录,将...

    (Java毕业设计)JAVA文件压缩与解压缩实践(源代码+).rar

    (Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业...

    java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip

    java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文)....

    JAVA文件压缩与解压缩实践(源代码).zip

    JAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩...

    JAVA文件压缩与解压缩实践(源代码+论文).rar

    JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件...

Global site tag (gtag.js) - Google Analytics