写在前面的话:使用ANT中的压缩功能在很多文章中都有,但是只能压缩指定目录的全部文件或者文件夹,在项目中,经常有这样的需求:只压缩指定目录的部分文件夹, 用过ant.xml 的人都很容易想到 fileset 的子属性: exclude 和 include , 看了一下ant的源码 , 其对应的类就是各种的selector , 所以简单尝使了两种selector 实现了上面所说的功能,具体代码如下.

可能大家会问, 为什么不把要压缩的文件拷贝到一个文件夹, 再压缩, 是因为我很怵文件的读写, 总感觉文件读写万一处理不好效率会有很大的影响,  把工作交给ANT比较放心.

其实, ANT的设计相当优雅,有时间真得应该拜读一下源码.

第一种:只能选择指定目录的一个文件夹.

public static void main(String[] args) {try {Project prj = new Project();Zip zip = new Zip();zip.setProject(prj);zip.setDestFile(new File("d:\\a.zip"));         String src1 = "D:\\evidence\\20120806\\";File src = new File(src1);FileSet fileSet = new FileSet();fileSet.setProject(prj);if (src.isFile()) {fileSet.setFile(src);} else {fileSet.setDir(src);}/*** <pre>* 目标:打包时只选指定目录的文件夹A和文件夹B,对于下面的程序来讲,"79个..."和"过年写的.."就是指两个文件夹.* 方法:为fileSet添加两个FilenameSelector* 实现效果:只会把第一个加入的FilenameSelector打包,第二个不会.* 总结:打包目录全部的文件夹,只需在文件名后面加"/**\/*"* </pre>*/FilenameSelector a = new FilenameSelector();a.setName("79个不可不知的生活潜规则_2012080617154683/**/*");FilenameSelector b = new FilenameSelector();b.setName("过年写的几篇家乡小吃片段_2012080617154651/**/*");fileSet.addFilename(b);fileSet.addFilename(a);zip.addFileset(fileSet);zip.execute();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}

第二种:可以选择指定目录的N个子文件夹.

public static void main(String[] args) {try {Project prj = new Project();Zip zip = new Zip();zip.setProject(prj);zip.setDestFile(new File("d:\\a.zip"));         String src1 = "D:\\evidence\\20120806\\";File src = new File(src1);FileSet fileSet = new FileSet();fileSet.setProject(prj);if (src.isFile()) {fileSet.setFile(src);} else {fileSet.setDir(src);}/*** <pre>* 目标:打包时只选指定目录的文件夹A和文件夹B,对于下面的程序来讲,"79个..."和"过年写的.."就是指两个文件夹.* 方法:为fileSet添加OrSelector,在OrSelector中添加两个FilenameSelector* 实现效果:实现目标* </pre>*/FilenameSelector a = new FilenameSelector();a.setName("79个不可不知的生活潜规则_2012080617154683/**/*");FilenameSelector b = new FilenameSelector();b.setName("过年写的几篇家乡小吃片段_2012080617154651/**/*");OrSelector or = new OrSelector(); or.addFilename(a);or.addFilename(b);fileSet.addOr(or);zip.addFileset(fileSet);zip.execute();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}

java压缩----使用ANT JDK压缩---只压缩选中目录的指定文件夹相关推荐

  1. python解压到指定文件夹_在Python中压缩和解压文件

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 如果你已经使用计算机一段时间,你可能遇到了.zip扩展名的文件.它们是可以保存许多其他文件,文件夹和子文件 ...

  2. python中怎么压缩文件夹_python-对指定文件夹进行压缩

    python-对指定文件夹进行压缩 目的 首先,我试验了一下[1]的效果: import os from zipfile import ZipFile def backupZip(folder): # ...

  3. Excel记录指定文件夹下的所有文件名;批量解压压缩包,处理压缩包套压缩包问题;

    10.20 发现一个问题: 当压缩包过大,文件条目超过1048576时,rarfile库中的代码已经不能解决这个压缩包了,需要加装unrar库(from unrar import rarfile)和u ...

  4. Android中将指定文件夹打包成压缩文件

    Android中将指定文件夹打包成压缩文件 因为业务功能的需要,所以今天在网上找了一下安卓中生成压缩文件的代码,搜到的不同文章基本都是用的同一段代码,当我使用这段代码时候发现,它在生成压缩文件的时候并 ...

  5. linux java读取文件夹下文件名,Java获取Linux上指定文件夹下所有第一级子文件夹...

    说明:需要只获得第一级文件夹目录 package com.sunsheen.jfids.studio.monitor.utils; import java.io.BufferedReader; imp ...

  6. Java删除指定文件夹下的文件和目录

    Java删除指定文件夹下的文件和目录 import java.io.File;public class TestFile {public static void main(String[] args) ...

  7. java文件名大小_java 比较指定文件夹内.txt文件名的大小

    我写了一个程序:每过一定时间向指定文件夹内写一个按时间命名的.txt文件现在想实现最新的txt文件和最原先的txt文件内容比对但是不知道如何获得这两个文家的内容.packagetest;import. ...

  8. java ftp遍历所有子文件_Java 遍历指定文件夹及子文件夹下的文件

    Java 遍历指定文件夹及子文件夹下的文件 /** * 遍历指定文件夹及子文件夹下的文件 * * @author testcs_dn * @date2014年12月12日下午2:33:49 * @pa ...

  9. java 删除指定文件夹和下面所有文件_java——File IO流

    1.File(掌握) (1)IO流操作中大部分都是对文件的操作,所以Java就提供了File类供我们来操作文件 (2)构造方法 A:File file = new File("e:demoa ...

最新文章

  1. phpstudy2014 php7.0,phpstudy下载_phpStudy下载2014 官方版_php环境集成包 1.0_零度软件园...
  2. apt cyg 安装php,Cygwin的包管理器:apt
  3. Quartus II调用modelsim无缝仿真
  4. 基于visual Studio2013解决面试题之0402合并升序链表并去重
  5. ElasticSearch入门 :Windows下安装ElasticSearch
  6. java url json字符串_JAVA中带有JSON字符串的HTTP POST请求
  7. 习惯的力量之五让迟延见鬼去吧
  8. 如何管理跨部门的沟通与协作?
  9. Codeforces Round #606 (Div. 2, based on Technocup 2020 Elimination Round 4) dfs + 思维
  10. java事务超时时间,java – 如何在WebSphere Liberty Batch中配置事务超时?
  11. 递归删除.svn文件夹以及文件
  12. 【ActiveMQ】消息生产者自动注入报错:Could not autowire. No beans of 'JmsMessagingTemplate' type found
  13. AndroidStudio安卓原生开发_SwipeRefreshLayout_下拉刷新控件---Android原生开发工作笔记119
  14. 让VS2008真正支持JQuery的智能感知
  15. VLAN 间 路由——华为(单臂路由)
  16. Matlab画图函数与参数
  17. 景观干扰度(arcgis和fragstats)
  18. VHDL数控分频器及其应用
  19. 分布式系统架构 - 学习/实践
  20. 微信公众号查后端服务器IP,微信公众号平台接口开发 获取微信服务器IP地址方法解析...

热门文章

  1. jdk1.8之HashMap
  2. 国王的游戏(华东师范大学-信息学竞赛学教案)
  3. NumPy的思考……
  4. Codeforces Round #260 (Div. 1) C. Civilization(dfs+并查集)
  5. web前端入门必知的10个技术
  6. python入门(1)python的前景
  7. 纯CSS实现气泡聊天框的方法
  8. Android联系人Contacts详解
  9. 关于sharepoint 里面的时间和Moss对象模型取出来的时间不一致问题
  10. 理解并使用ASP.NET的高级配置