实现自己的解压缩包包工具类 博客分类: Unzip Unzip
程序员文章站
2024-03-24 15:00:34
...
自己用java简单实现了一个解压缩的工具类,可以解压*.zip、*.jar等压缩文件,代码如下:里面需要传入两个参数,一个是filePath(待解压文件路径)、另一个是dirPath(文件解压后的目录),目前代码里面取到的是项目根下的项目名称.jar文件,也就是对上一篇中的 http://ryan200909.iteye.com/blog/1734743(实现自己的项目打jar包工具类)打的jar包文件进行解压缩。
【Java Code】
--------------------------------------------------------------------
【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() ; } }