<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.9.7</version>
</dependency>

Java

import java.io.File;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Expand;
import org.apache.tools.ant.taskdefs.Zip;
import org.apache.tools.ant.types.FileSet; /**
* [压缩/解压缩]文件和文件夹
*/
public class Zipper { public final static String encoding = "GBK"; /**
* 压缩文件和文件夹
*
* @param srcPathname 需要被压缩的文件或文件夹路径
* @param zipFilepath 将要生成的zip文件路径
* @throws BuildException
* @throws RuntimeException
*/
public static void zip(String srcPathname, String zipFilepath) throws BuildException, RuntimeException {
File file = new File(srcPathname);
if (!file.exists()) {
throw new RuntimeException("source file or directory " + srcPathname + " does not exist.");
} Project proj = new Project();
FileSet fileSet = new FileSet();
fileSet.setProject(proj);
// 判断是目录还是文件
if (file.isDirectory()) {
fileSet.setDir(file);
// ant中include/exclude规则在此都可以使用
// 比如:
// fileSet.setExcludes("**/*.txt");
// fileSet.setIncludes("**/*.xls");
} else {
fileSet.setFile(file);
} Zip zip = new Zip();
zip.setProject(proj);
zip.setDestFile(new File(zipFilepath));
zip.addFileset(fileSet);
zip.setEncoding(encoding);
zip.execute(); System.out.println("compress successed.");
} /**
* 解压缩文件和文件夹
*
* @param zipFilepath 需要被解压的zip文件路径
* @param destDir 将要被解压到哪个文件夹
* @throws BuildException
* @throws RuntimeException
*/
public static void unzip(String zipFilepath, String destDir) throws BuildException, RuntimeException {
if (!new File(zipFilepath).exists()) {
throw new RuntimeException("zip file " + zipFilepath + " does not exist.");
} Project proj = new Project();
Expand expand = new Expand();
expand.setProject(proj);
expand.setTaskType("unzip");
expand.setTaskName("unzip");
expand.setEncoding(encoding); expand.setSrc(new File(zipFilepath));
expand.setDest(new File(destDir));
expand.execute(); System.out.println("uncompress successed.");
} }

最新文章

  1. 读取数据库数据,并将数据整合成3D饼图在jsp中显示
  2. centos6 安装mysql报错Requires: libc.so.6(GLIBC_2.14)
  3. Linux下使用 Memory Analyzer
  4. .net学习笔记----Asp.net的生命周期之一应用程序生命周期
  5. win95+ie3-win10+ie11 浏览器执行漏洞
  6. MySQL几个注意点
  7. Java基础知识强化59:String(字符串)和其他类型的相互转化
  8. RTNETLINK answers: Operation not permitted
  9. Swift语言iOS8的蓝牙Bluetooth解析
  10. Oracle不能导入空表解决方案
  11. 利用Mono.Cecil动态修改程序集来破解商业组件(仅用于研究学习)
  12. Ant 随想
  13. Android开发之NavigationView的使用
  14. 简单的留言板(dom+正则练习)
  15. Strange fuction
  16. ASP.NET没有魔法——ASP.NET MVC Controller的实例化与执行
  17. Java公开课-02.抽象类和接口
  18. windows+Apache+mod_wsgi+flask部署笔记
  19. Axure RP Extension for Chrome修复
  20. [contest 782] 9.7

热门文章

  1. ubuntu install redis/mongo 以及 监控安装
  2. SQL的语言分类
  3. 14.data.js
  4. Vue的组件及传参
  5. visual studio 注释模板
  6. SpringCloud学习笔记《---01 概念 ---》篇
  7. Making the Grade
  8. 自然数幂求和——第二类Strling数
  9. MYSQL获取同时关注了某两个(或者N个)用户的用户
  10. 上海第三产业增加值 占比GDP首破七成