`
Ryan200909
  • 浏览: 9334 次
社区版块
存档分类
最新评论

实现自己的解压缩包包工具类

阅读更多
自己用java简单实现了一个解压缩的工具类,可以解压*.zip、*.jar等压缩文件,代码如下:里面需要传入两个参数,一个是filePath(待解压文件路径)、另一个是dirPath(文件解压后的目录),目前代码里面取到的是项目根下的项目名称.jar文件,也就是对上一篇中的 http://ryan200909.iteye.com/blog/1734743(实现自己的项目打jar包工具类)打的jar包文件进行解压缩。

【Java Code】

--------------------------------------------------------------------

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.logging.Logger;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;

/**
 * 解包工具类
 * @author laiyujun@vip.qq.com
 * QQ: 381418273
 *
 */
public class UnzipJarUtil {

	private Logger log = Logger.getLogger(this.getClass().getName()) ;
//	private String path = System.getProperty("java.class.path") ;
//	private String currentPath = path  + File.separator + this.getClass().getName().replaceAll("\\.", "\\\\") +".class" ;
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		UnzipJarUtil util = new UnzipJarUtil() ;
		
		String userPath = System.getProperty("user.dir") ; //得到当前项目的根
		String filePath = userPath + ".jar" ; 		// 定义压缩文件名称
		File file = new File(filePath) ;	//得到压缩文件		
		util.log.info("unzip file【"+file.getAbsolutePath()+"】") ;
		
		String dirPath = file.getAbsolutePath().replace(".", "_") ;
		File unzipDir = new File(dirPath); //得到解压缩目录
		util.log.info("unzip file path【"+unzipDir.getAbsolutePath()+"】") ;
		
		long start = System.currentTimeMillis();
		try {
			util.unzip(file, unzipDir) ; //执行解压缩
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			long end = System.currentTimeMillis();
			util.log.info("unzip use total time【"+(end-start)+"ms】") ;
		}
		
	}

	private void unzip(File file, File unzipDir) throws Exception {
		File outFile = null ;
		OutputStream out = null ;
		InputStream input = null ;
		ZipEntry entry = null ;
		
		ZipFile zipFile = new ZipFile(file) ;	
		ZipInputStream zipInput = new ZipInputStream(new FileInputStream(file)) ;
	
		int i = 0 ;
		while((entry = zipInput.getNextEntry()) != null){
			log.info("unzip【" + unzipDir.getAbsolutePath()+  File.separator + entry.getName() + "】file "+ (++i)) ;
			
			outFile = new File(unzipDir.getAbsolutePath()+  File.separator + entry.getName()) ;
			
			if(!outFile.getParentFile().exists()){	// 如果输出文件夹不存在
				outFile.getParentFile().mkdirs() ;	// 创建文件夹
			}
			
			 if (!outFile.exists()){             // 判断输出文件是否存在
				 outFile.createNewFile() ; // 创建文件
			 }
			 
			input = zipFile.getInputStream(entry) ;
			out = new FileOutputStream(outFile) ;
			int temp = 0 ;
			while((temp = input.read()) != -1){
				out.write(temp) ;
			}
			input.close() ;
			out.close() ;
		}
		zipInput.close() ;
	}
} 

分享到:
评论

相关推荐

    java写的压缩工具类

    这个包包含了多种类和接口,用于实现ZIP、GZIP、DEFLATE等压缩算法。在这个"java写的压缩工具类"中,我们可以预见到它可能封装了这些功能,使得开发者可以更方便地在项目中进行文件或数据的压缩和解压缩。 1. **...

    php zip gzip tar..压缩解压缩类

    这个资源包包含了处理zip、gzip和tar等压缩格式的类,提供了方便的方法来完成这些工作。以下是对这些知识点的详细说明: 1. **PHP**:PHP(PHP:Hypertext Preprocessor)是一种开源的服务器端脚本语言,广泛用于...

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

    这个实践项目旨在利用Java编程语言实现文件的压缩与解压缩功能,为用户提供一个高效、稳定且易于使用的文件处理工具。 源代码部分包含了完整的Java实现代码,包括压缩和解压缩两个主要功能。在压缩方面,代码使用了...

    基于JAVA的文件压缩与解压缩实践设计(包含源代码及论文)

    本项目“基于JAVA的文件压缩与解压缩实践设计”聚焦于利用Java语言实现这一功能,为开发者提供了一套完整的解决方案,包括源代码和相关的理论分析论文。下面将详细阐述其中涉及的主要知识点。 首先,Java作为一门...

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

    在IT行业中,文件压缩与解压缩是常见的...总的来说,文件压缩与解压缩是软件开发中不可或缺的技能,Java提供的工具使得这个过程变得简单易行。通过实践和学习提供的源代码,你将能够熟练地在Java项目中集成这一功能。

    简单压缩工具(Java).rar_java工具_压缩工具

    2. 使用`ZipInputStream`和`ZipEntry`读取并解压缩ZIP档案,从JAR中提取文件。 3. 文件和目录的路径处理,确保正确地添加到JAR中。 4. 对于JAR特有的元数据,如MANIFEST.MF文件的处理,可能涉及到`java.util.jar....

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

    解压缩过程主要涉及到 `ZipInputStream` 类,它是 `InputStream` 的子类,可以读取ZIP格式的数据。以下是一个简单的解压示例: ```java import java.io.*; import java.util.zip.*; public class UnzipExample { ...

    C#编程语言编写的压缩解压器

    本项目“C#编程语言编写的压缩解压器”则展示了如何利用C#来实现文件的压缩与解压缩功能。这涉及到计算机科学中的数据存储、文件系统管理以及算法等多个核心概念。 首先,C#中的压缩和解压缩通常依赖于第三方类库,...

    java操作压缩文件和解压文件实例代码(经测试)

    提供的压缩包包含三个文件:ant.jar(一个用于构建工具的库)、ZipFileList.java(一个包含压缩和解压缩功能的类)和CompressBook.java(可能是一个使用该功能的主程序)。以下是对这些知识点的详细解释: 1. **...

    手机解锁工具~不用再跑营业厅了,自己解!

    该压缩包包含以下文件: 1. META_DLL.dll:这可能是一个动态链接库文件,用于提供某些特定功能或服务给UnLock.exe这个主程序。 2. brom.dll:同样是动态链接库文件,BROM(Boot ROM Monitor)通常与手机固件更新和...

    JDK 压缩

    #### 解压缩GZIP文件: ```java import java.io.*; import java.util.zip.*; public class GunzipExample { public static void main(String[] args) throws IOException { File gzipFile = new File("output.txt...

    jdk src 源码 压缩包提取

    其次,`java.util`包提供了大量实用工具类,如集合框架。`ArrayList`和`HashMap`是集合框架的代表,它们的源码展示了动态数组和哈希表的数据结构,以及它们如何执行插入、删除、查找等操作。此外,还有`LinkedList`...

    最终版.7z

    "最终版.7z"是一个压缩包文件,它采用了7-Zip软件进行压缩,这是流行的开源压缩工具,以其高效率和广泛支持的压缩格式而...在处理这类文件时,确保你的解压缩软件是最新的,这样可以支持最新的压缩算法和安全性更新。

    基于PHP的rar在线转zip格式php程序.zip

    标题 "基于PHP的rar在线转zip格式php程序.zip" 提示我们这个压缩包包含一个用于将RAR文件转换为ZIP格式的PHP程序。这涉及到PHP编程、文件处理、压缩格式理解和解压缩库的使用等技术知识。 PHP是一种广泛使用的...

    VC++中文版安装包包

    首先,解压缩文件到指定的文件夹,通常推荐选择一个便于访问的位置。解压完成后,找到并运行安装程序,通常为Setup.exe或者类似名字的可执行文件。按照安装向导的步骤进行,选择安装类型(典型或自定义),并确定...

    遗传算法、免疫算法、退火算法、粒子群算法、鱼群算法、蚁群算法和神经网络算法等常用智能算法的MATLAB实现.zip

    本压缩包包含的是几种常用的智能优化算法在MATLAB环境下的实现,包括遗传算法、免疫算法、退火算法、粒子群算法、鱼群算法、蚁群算法以及神经网络算法。下面将对这些算法进行详细阐述: 1. **遗传算法(Genetic ...

    NET 反汇编工具 GrayWolf-汉化版

    关于 "Thumbs.db" 文件,它是 Windows 系统用于存储缩略图预览的文件,一般出现在图片密集的文件夹中,与 GrayWolf 工具本身的功能关联不大,可能是由于压缩包包含有图像文件而自动生成的。 "unrar.dll" 文件可能是...

    libsvm.rar_SVM_butgja_libsvm工具箱_woodai2

    本压缩包包含两个版本的LibSVM工具箱:2.89和3.17。这两个版本之间可能存在以下差异: 1. **性能优化**:新版本通常会进行性能优化,比如更快的训练速度、更高效的内存管理或更好的并行计算支持。 2. **新特性**:...

    android apk反编译工具

    本压缩包包含的是一款名为jd-gui.exe的反编译工具,以及一份readme.txt说明文件。 **jd-gui.exe** 是Java Decompiler的图形用户界面版本,它允许用户查看和分析Java字节码,将其反编译回可读的Java源代码。这个工具...

    代码.rar_多目标 选址_模拟退火 matlab_模拟退火代码_退火 选址_选址 matlab

    该压缩包包含以下五个MATLAB源文件: 1. **SA.m**:这是主程序文件,实现了模拟退火算法的核心逻辑。它定义了初始状态,设定温度序列,执行迭代过程,并根据退火规则接受或拒绝新的解。 2. **simulated.m**:这个...

Global site tag (gtag.js) - Google Analytics