1. <dependency>
  2. <groupId>org.apache.ant</groupId>
  3. <artifactId>ant</artifactId>
  4. <version>1.9.7</version>
  5. </dependency>

Java

  1. import java.io.File;
  2. import org.apache.tools.ant.BuildException;
  3. import org.apache.tools.ant.Project;
  4. import org.apache.tools.ant.taskdefs.Expand;
  5. import org.apache.tools.ant.taskdefs.Zip;
  6. import org.apache.tools.ant.types.FileSet;
  7.  
  8. /**
  9. * [压缩/解压缩]文件和文件夹
  10. */
  11. public class Zipper {
  12.  
  13. public final static String encoding = "GBK";
  14.  
  15. /**
  16. * 压缩文件和文件夹
  17. *
  18. * @param srcPathname 需要被压缩的文件或文件夹路径
  19. * @param zipFilepath 将要生成的zip文件路径
  20. * @throws BuildException
  21. * @throws RuntimeException
  22. */
  23. public static void zip(String srcPathname, String zipFilepath) throws BuildException, RuntimeException {
  24. File file = new File(srcPathname);
  25. if (!file.exists()) {
  26. throw new RuntimeException("source file or directory " + srcPathname + " does not exist.");
  27. }
  28.  
  29. Project proj = new Project();
  30. FileSet fileSet = new FileSet();
  31. fileSet.setProject(proj);
  32. // 判断是目录还是文件
  33. if (file.isDirectory()) {
  34. fileSet.setDir(file);
  35. // ant中include/exclude规则在此都可以使用
  36. // 比如:
  37. // fileSet.setExcludes("**/*.txt");
  38. // fileSet.setIncludes("**/*.xls");
  39. } else {
  40. fileSet.setFile(file);
  41. }
  42.  
  43. Zip zip = new Zip();
  44. zip.setProject(proj);
  45. zip.setDestFile(new File(zipFilepath));
  46. zip.addFileset(fileSet);
  47. zip.setEncoding(encoding);
  48. zip.execute();
  49.  
  50. System.out.println("compress successed.");
  51. }
  52.  
  53. /**
  54. * 解压缩文件和文件夹
  55. *
  56. * @param zipFilepath 需要被解压的zip文件路径
  57. * @param destDir 将要被解压到哪个文件夹
  58. * @throws BuildException
  59. * @throws RuntimeException
  60. */
  61. public static void unzip(String zipFilepath, String destDir) throws BuildException, RuntimeException {
  62. if (!new File(zipFilepath).exists()) {
  63. throw new RuntimeException("zip file " + zipFilepath + " does not exist.");
  64. }
  65.  
  66. Project proj = new Project();
  67. Expand expand = new Expand();
  68. expand.setProject(proj);
  69. expand.setTaskType("unzip");
  70. expand.setTaskName("unzip");
  71. expand.setEncoding(encoding);
  72.  
  73. expand.setSrc(new File(zipFilepath));
  74. expand.setDest(new File(destDir));
  75. expand.execute();
  76.  
  77. System.out.println("uncompress successed.");
  78. }
  79.  
  80. }

org.apache.ant实现压缩和解压的更多相关文章

  1. java实现文件的压缩和解压

    java实现文件的压缩和解压 代码压缩实现 package com.hjh.demo.zip; import java.io.BufferedInputStream; import java.io.F ...

  2. hadoop压缩和解压

    最近有一个hadoop集群上的备份需求.源文件有几百G,如果直接复制太占用磁盘空间.将文件从hadoop集群下载到本地,压缩之后再上传到hadoop则太耗时间.于是想到能否直接在HDFS文件系统上进行 ...

  3. 【C#公共帮助类】WinRarHelper帮助类,实现文件或文件夹压缩和解压,实战干货

    关于本文档的说明 本文档使用WinRAR方式来进行简单的压缩和解压动作,纯干货,实际项目这种压缩方式用的少一点,一般我会使用第三方的压缩dll来实现,就如同我上一个压缩类博客,压缩的是zip文件htt ...

  4. C#文件或文件夹压缩和解压方法(通过ICSharpCode.SharpZipLib.dll)

    我在网上收集一下文件的压缩和解压的方法,是通过ICSharpCode.SharpZipLib.dll 来实现的 一.介绍的目录 第一步:下载压缩和解压的 ICSharpCode.SharpZipLib ...

  5. java 文件压缩和解压(ZipInputStream, ZipOutputStream)

    最近在看java se 的IO 部分 , 看到 java 的文件的压缩和解压比较有意思,主要用到了两个IO流-ZipInputStream, ZipOutputStream,不仅可以对文件进行压缩,还 ...

  6. C#实现通过Gzip来对数据进行压缩和解压

    C#实现通过Gzip来对数据进行压缩和解压 internal static byte[] Compress(byte[] data) { using (var compressedStream = n ...

  7. linux常用命令:4文件压缩和解压命令

    文件压缩和解压命令 压缩命令:gzip.tar[-czf].zip.bzip2 解压缩命令:gunzip.tar[-xzf].unzip.bunzip2 1. 命令名称:gzip 命令英文原意:GNU ...

  8. .net文件压缩和解压及中文文件夹名称乱码问题

    /**************************注释区域内为引用http://www.cnblogs.com/zhaozhan/archive/2012/05/28/2520701.html的博 ...

  9. linux下文件加密压缩和解压的方法

    一.用tar命令 对文件加密压缩和解压 压缩:tar -zcf  - filename |openssl des3 -salt -k password | dd of=filename.des3 此命 ...

随机推荐

  1. appium + python 自动化调试手机时 UiAutomator exited unexpectedly with code 0, signal null

    放上appium报错图,appium在手机里安装了appium setting 和unlock 软件,输入法也被变成了appium input ,但是就是点不到目标软件,手机也可以被cmd  adb ...

  2. POJ 1584 /// 判断圆(点)在多边形内 判断凸包

    题目大意: 给定n,n边形 给定圆钉的 半径r 和圆心(x,y) 接下来n行是n边形的n个顶点(顺时针或逆时针给出) 判断n边形是否为凸包 若不是输出 HOLE IS ILL-FORMED 判断圆心和 ...

  3. POJ - 2774~POJ - 3415 后缀数组求解公共字串问题

    POJ - 2774: 题意: 求解A,B串的最长公共字串 (摘自罗穗骞的国家集训队论文): 算法分析: 字符串的任何一个子串都是这个字符串的某个后缀的前缀. 求 A 和 B 的最长 公共子串等价于求 ...

  4. 18-1-函数中this的指向

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. login-Linux必学的60个命令

    1.作用 login的作用是登录系统,它的使用权限是所有用户. 2.格式 login [name][-p ][-h 主机名称] 3.主要参数 -p:通知login保持现在的环境参数. -h:用来向远程 ...

  6. mysql模糊查询特殊字符(\,%和_)处理

    /** * sql模糊查询特殊字符(\,%和_)处理 * * @param string $str * @return string */ public static function like_se ...

  7. JUC 一 Callable

    java.util.concurrent.Callable是一个泛型接口,只有一个call()方法 Callable和Runnable的区别 Callable使用call()方法,Runnable使用 ...

  8. synchronized ReentrantLock 比较分析

    在编写多线程代码的时候,对于不允许并发的代码,很多需要加锁进行处理.在进行加锁处理时候,synchronized作为java的内置锁,同时也是java关键字,最为被人熟知,即使是最初级的java程序员 ...

  9. 深入浅出 Java Concurrency (26): 并发容器 part 11 Exchanger[转]

    可以在对中对元素进行配对和交换的线程的同步点.每个线程将条目上的某个方法呈现给 exchange 方法,与伙伴线程进行匹配,并且在返回时接收其伙伴的对象.Exchanger 可能被视为 Synchro ...

  10. Java笔记 - 输入输出流

    java.io包中定义了各式各样的"流(stream)" 类型(类或抽象类),通过标准的方法实现对于数据的输入/输出操作. 一.流类型分类 以从不同的角度对其进行分类:按数据流的方 ...