java利用Ant解压指定zip压缩包到指定文件夹
2016-06-19 15:42
369 查看
上一篇介绍了java利用ant压缩指定文件夹:地址是这里:http://blog.csdn.net/zp357252539/article/details/51712467,
本文则继续完成把压缩包解压的功能:说明下,关于压缩包的后缀名有很多,不同的后缀名的压缩算法可能不同,那么解压或压缩的方式也不尽相同,本文和上一篇介绍的都是基于常见的zip格式进行压缩和解压缩。
本文则继续说关于java利用ant来解压zip包的例子:
还是先上代码结构:
我们要解压的压缩包位置是这里:D:\test1\zip.zip,如图:
要解压的位置是这里:D:\test,如图:
我们可以看到当前要解压的位置D:\test目录下还没有数据,
接下来我们执行主类:UnZipCompressorByAnt.java
执行结果完成后,我们查看D:\test目录下,如下图:
我们查看压缩包zip.zip里的内容,发现是和解压之后完全一样的:如图:
注意问题:
乱码的问题,如果发现有这方面的问题@我,或者自己解决吧。
如果要获取代码或jar,戳这里吧:http://pan.baidu.com/s/1o79O4cE
本文则继续完成把压缩包解压的功能:说明下,关于压缩包的后缀名有很多,不同的后缀名的压缩算法可能不同,那么解压或压缩的方式也不尽相同,本文和上一篇介绍的都是基于常见的zip格式进行压缩和解压缩。
本文则继续说关于java利用ant来解压zip包的例子:
还是先上代码结构:
我们要解压的压缩包位置是这里:D:\test1\zip.zip,如图:
要解压的位置是这里:D:\test,如图:
我们可以看到当前要解压的位置D:\test目录下还没有数据,
接下来我们执行主类:UnZipCompressorByAnt.java
package com.acconsys.vpm.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.util.Enumeration; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; public class UnZipCompressorByAnt { private static final int BUFFEREDSIZE = 1024; /** * 解压缩 * * @param zipFilePath * 压缩包路径 * @param fileSavePath * 解压路径 * @param isDelete * 是否删除源文件 * @throws Exception */ public void unZip(String zipFilePath, String fileSavePath, boolean isDelete) throws Exception { try { (new File(fileSavePath)).mkdirs(); File f = new File(zipFilePath); if ((!f.exists()) && (f.length() <= 0)) { throw new Exception("要解压的文件不存在!"); } ZipFile zipFile = new ZipFile(f); String strPath, gbkPath, strtemp; File tempFile = new File(fileSavePath);// 从当前目录开始 strPath = tempFile.getAbsolutePath();// 输出的绝对位置 Enumeration<ZipEntry> e = zipFile.getEntries(); while (e.hasMoreElements()) { org.apache.tools.zip.ZipEntry zipEnt = e.nextElement(); gbkPath = zipEnt.getName(); if (zipEnt.isDirectory()) { strtemp = strPath + File.separator + gbkPath; File dir = new File(strtemp); dir.mkdirs(); continue; } else { // 读写文件 InputStream is = zipFile.getInputStream(zipEnt); BufferedInputStream bis = new BufferedInputStream(is); gbkPath = zipEnt.getName(); strtemp = strPath + File.separator + gbkPath; // 建目录 String strsubdir = gbkPath; for (int i = 0; i < strsubdir.length(); i++) { if (strsubdir.substring(i, i + 1).equalsIgnoreCase("/")) { String temp = strPath + File.separator + strsubdir.substring(0, i); File subdir = new File(temp); if (!subdir.exists()) subdir.mkdir(); } } FileOutputStream fos = new FileOutputStream(strtemp); BufferedOutputStream bos = new BufferedOutputStream(fos); int len; byte[] buff = new byte[BUFFEREDSIZE]; while ((len = bis.read(buff)) != -1) { bos.write(buff, 0, len); } bos.close(); fos.close(); } } } catch (Exception e) { e.printStackTrace(); throw e; } if (isDelete) { new File(zipFilePath).delete(); } } public static void main(String[] args) { UnZipCompressorByAnt cpr = new UnZipCompressorByAnt(); try { cpr.unZip("D:\\test1\\zip.zip", "D:\\test", false); } catch (Exception e) { e.printStackTrace(); } } }
执行结果完成后,我们查看D:\test目录下,如下图:
我们查看压缩包zip.zip里的内容,发现是和解压之后完全一样的:如图:
注意问题:
乱码的问题,如果发现有这方面的问题@我,或者自己解决吧。
如果要获取代码或jar,戳这里吧:http://pan.baidu.com/s/1o79O4cE
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树