`
biguan
  • 浏览: 4885 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

用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格式的压缩包!");
		}
	}
}
  • ant.jar (1.4 MB)
  • 下载次数: 464
分享到:
评论
3 楼 kwgjqqq 2012-07-19  
不支持节呀到根目录
2 楼 hoyzhang 2012-06-13  
纯java解压rar,支持密码
http://code.google.com/p/java-unrar/
1 楼 shiz25 2011-10-19  
找了好久,才找到 ,谢谢!

相关推荐

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

    总的来说,解压缩ZIP和RAR格式的文件在Java中可以通过标准库或第三方库轻松实现,理解并掌握I/O流和压缩流的使用是关键。在开发过程中,确保代码的健壮性和灵活性,同时考虑性能优化,例如批量解压缩、多线程处理等...

    java实现的解压与压缩 zip和rar类型的

    以下是一个使用此库进行RAR解压缩的示例: ```java import org.apache.commons.compress.archivers.rar.RarArchiveEntry; import org.apache.commons.compress.archivers.rar.RarArchiveInputStream; import org....

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

    本文将详细介绍标题和描述中提到的几个关键知识点:Java中的zip、rar(包括处理带密码的RAR文件)、gz压缩,以及FTP工具类的使用。 1. **Java ZIP压缩与解压缩**: Java内置的`java.util.zip`包提供了处理ZIP文件...

    Java实现的zip压缩及解压缩工具类示例

    "Java实现的zip压缩及解压缩...本示例中,我们详细地介绍了Java实现的zip压缩及解压缩工具类,包括压缩文件和解压缩文件的实现原理和使用方法。该工具类可以用于各种Java应用程序中,例如文件上传、下载、备份等场景。

    详解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)利用Java实现zip压缩.解压缩.rar_decompress rar java_zip 压缩

    接下来,我们讨论如何解压缩ZIP文件。解压缩通常包括以下步骤: 1. **创建`ZipInputStream`**:同样,你需要创建一个`ZipInputStream`,它从ZIP文件的输入流读取。 ```java FileInputStream fis = new ...

    java对zip、rar文件的压缩和解压缩

    本文将详细介绍如何使用Java语言实现ZIP和RAR格式文件的压缩与解压缩操作。文章通过具体的代码示例展示了整个处理流程,并针对不同格式文件的特点进行了优化。 #### ZIP文件的压缩与解压缩 ##### 压缩原理与API...

    Java通用解压代码(RAR5,Zip,7Z)

    在Java编程环境中,解压不同类型的压缩文件,如RAR5、Zip和7z,是一项常见的任务。为了实现这一功能,我们需要使用特定的库,因为Java标准库并不直接支持RAR5和7z格式。这里我们将详细探讨如何使用Java来处理这些...

    解压缩工具类

    "解压缩工具类"这个标题指的是一个特定的Java类库,它提供了解压缩功能,方便开发者在项目中快速实现对压缩文件(如ZIP或RAR)的处理。这类工具类通常封装了与解压缩相关的复杂操作,使得开发者无需深入了解底层细节...

    jdk1.8压缩文件rar zip java8压缩版

    在解压缩"jdk1.8_161"这个文件后,您将得到Java 8的安装包。根据您的操作系统(Windows、Linux或macOS),您需要按照相应的步骤配置环境变量,确保系统能够识别和使用Java 8。例如,在Windows上,您可能需要设置`...

    java.util.zip 解压缩文件,ZIP格式压缩文件.rar

    首先,让我们看看如何解压缩ZIP文件。解压缩过程主要涉及到 `ZipInputStream` 类,它是 `InputStream` 的子类,可以读取ZIP格式的数据。以下是一个简单的解压示例: ```java import java.io.*; import java.util....

    java实现rar压缩与解压缩

    在Java编程语言中,实现RAR压缩与解压缩是一项常见的任务,尤其在处理大量数据或打包文件以便于传输时。本文将深入探讨如何使用Java来实现这个功能,主要关注`FileUtil.java`文件中的代码实现。 首先,Java本身并不...

    java文件解压缩工具箱及案例

    通过调用上述代码,解压缩ZIP和RAR文件,然后检查`demo.txt`是否成功解压并内容无误。 通过结合这两个库,我们可以创建一个全面的文件解压缩工具箱,覆盖了大部分常见的压缩格式。同时,注意处理各种编码问题,确保...

    Java解压zip,rar,7z的jar包

    这个示例展示了如何使用Apache Commons Compress库进行.zip文件的解压缩和压缩操作。请注意,对于.rar和.7z文件,你需要根据具体库的文档进行相应调整。 总的来说,Java处理.zip、.rar和.7z文件时,需依赖第三方库...

    利用ant.jar解压缩zip包

    此外,如果你需要在命令行环境中使用ant.jar,可以编写一个简单的Ant构建文件(build.xml),并使用`unzip`任务来解压缩ZIP文件。例如: ```xml <unzip src="path/to/your.zip" dest="output/directory"/> `...

    java解压缩

    Java解压缩功能主要依赖于`java.util.zip`包提供的工具类,如`ZipFile`和`ZipEntry`。通过合理的编码和流操作,可以高效、准确地完成ZIP文件的解压缩任务。同时,要注意处理文件名的编码问题,确保在各种环境中都能...

    解压缩加密工具类SSSS

    总的来说,“解压缩加密工具类 SSSS”是安全和实用性兼备的工具,能够满足用户对数据隐私和安全性的高要求。在数字化时代,这样的工具对于个人和企业来说都是不可或缺的数据管理助手。正确使用并妥善保管密钥,将有...

    java解压缩rar文件

    本文将深入探讨如何使用Java来解压缩RAR文件,同时会提到一个名为Chilkat Java的第三方库,该库提供了方便的API来处理RAR文件。 首先,Java标准库(JDK)并不直接支持RAR文件的处理。虽然内置的`java.util.zip`包...

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

    在Java编程语言中,处理...通过以上这些知识点,你可以构建一个强大的Java工具类,实现ZIP和RAR文件的压缩与解压缩,包括处理加密的ZIP文件。这个工具类可以是项目中一个可靠的助手,提高代码的可重用性和可维护性。

    java_zip.rar_java软件_压缩软件

    7. **压缩与解压缩**: 在Java中,除了ZIP,还有GZIP和Deflater算法。GZIP适用于单个文件的压缩,而Deflater是低级别API,可以直接处理字节流,用于自定义压缩需求。 8. **跨平台**: Java的“一次编写,到处运行”...

Global site tag (gtag.js) - Google Analytics