自己用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() ;
}
}
分享到:
相关推荐
这个包包含了多种类和接口,用于实现ZIP、GZIP、DEFLATE等压缩算法。在这个"java写的压缩工具类"中,我们可以预见到它可能封装了这些功能,使得开发者可以更方便地在项目中进行文件或数据的压缩和解压缩。 1. **...
这个资源包包含了处理zip、gzip和tar等压缩格式的类,提供了方便的方法来完成这些工作。以下是对这些知识点的详细说明: 1. **PHP**:PHP(PHP:Hypertext Preprocessor)是一种开源的服务器端脚本语言,广泛用于...
这个实践项目旨在利用Java编程语言实现文件的压缩与解压缩功能,为用户提供一个高效、稳定且易于使用的文件处理工具。 源代码部分包含了完整的Java实现代码,包括压缩和解压缩两个主要功能。在压缩方面,代码使用了...
本项目“基于JAVA的文件压缩与解压缩实践设计”聚焦于利用Java语言实现这一功能,为开发者提供了一套完整的解决方案,包括源代码和相关的理论分析论文。下面将详细阐述其中涉及的主要知识点。 首先,Java作为一门...
在IT行业中,文件压缩与解压缩是常见的...总的来说,文件压缩与解压缩是软件开发中不可或缺的技能,Java提供的工具使得这个过程变得简单易行。通过实践和学习提供的源代码,你将能够熟练地在Java项目中集成这一功能。
2. 使用`ZipInputStream`和`ZipEntry`读取并解压缩ZIP档案,从JAR中提取文件。 3. 文件和目录的路径处理,确保正确地添加到JAR中。 4. 对于JAR特有的元数据,如MANIFEST.MF文件的处理,可能涉及到`java.util.jar....
解压缩过程主要涉及到 `ZipInputStream` 类,它是 `InputStream` 的子类,可以读取ZIP格式的数据。以下是一个简单的解压示例: ```java import java.io.*; import java.util.zip.*; public class UnzipExample { ...
本项目“C#编程语言编写的压缩解压器”则展示了如何利用C#来实现文件的压缩与解压缩功能。这涉及到计算机科学中的数据存储、文件系统管理以及算法等多个核心概念。 首先,C#中的压缩和解压缩通常依赖于第三方类库,...
提供的压缩包包含三个文件:ant.jar(一个用于构建工具的库)、ZipFileList.java(一个包含压缩和解压缩功能的类)和CompressBook.java(可能是一个使用该功能的主程序)。以下是对这些知识点的详细解释: 1. **...
该压缩包包含以下文件: 1. META_DLL.dll:这可能是一个动态链接库文件,用于提供某些特定功能或服务给UnLock.exe这个主程序。 2. brom.dll:同样是动态链接库文件,BROM(Boot ROM Monitor)通常与手机固件更新和...
#### 解压缩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...
其次,`java.util`包提供了大量实用工具类,如集合框架。`ArrayList`和`HashMap`是集合框架的代表,它们的源码展示了动态数组和哈希表的数据结构,以及它们如何执行插入、删除、查找等操作。此外,还有`LinkedList`...
"最终版.7z"是一个压缩包文件,它采用了7-Zip软件进行压缩,这是流行的开源压缩工具,以其高效率和广泛支持的压缩格式而...在处理这类文件时,确保你的解压缩软件是最新的,这样可以支持最新的压缩算法和安全性更新。
标题 "基于PHP的rar在线转zip格式php程序.zip" 提示我们这个压缩包包含一个用于将RAR文件转换为ZIP格式的PHP程序。这涉及到PHP编程、文件处理、压缩格式理解和解压缩库的使用等技术知识。 PHP是一种广泛使用的...
首先,解压缩文件到指定的文件夹,通常推荐选择一个便于访问的位置。解压完成后,找到并运行安装程序,通常为Setup.exe或者类似名字的可执行文件。按照安装向导的步骤进行,选择安装类型(典型或自定义),并确定...
本压缩包包含的是几种常用的智能优化算法在MATLAB环境下的实现,包括遗传算法、免疫算法、退火算法、粒子群算法、鱼群算法、蚁群算法以及神经网络算法。下面将对这些算法进行详细阐述: 1. **遗传算法(Genetic ...
关于 "Thumbs.db" 文件,它是 Windows 系统用于存储缩略图预览的文件,一般出现在图片密集的文件夹中,与 GrayWolf 工具本身的功能关联不大,可能是由于压缩包包含有图像文件而自动生成的。 "unrar.dll" 文件可能是...
本压缩包包含两个版本的LibSVM工具箱:2.89和3.17。这两个版本之间可能存在以下差异: 1. **性能优化**:新版本通常会进行性能优化,比如更快的训练速度、更高效的内存管理或更好的并行计算支持。 2. **新特性**:...
本压缩包包含的是一款名为jd-gui.exe的反编译工具,以及一份readme.txt说明文件。 **jd-gui.exe** 是Java Decompiler的图形用户界面版本,它允许用户查看和分析Java字节码,将其反编译回可读的Java源代码。这个工具...
该压缩包包含以下五个MATLAB源文件: 1. **SA.m**:这是主程序文件,实现了模拟退火算法的核心逻辑。它定义了初始状态,设定温度序列,执行迭代过程,并根据退火规则接受或拒绝新的解。 2. **simulated.m**:这个...