`

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

 
阅读更多

写在前面的话:使用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 block
			e.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 block
			e.printStackTrace();
		}
	}

 

分享到:
评论

相关推荐

    sun-java6-jdk

    【描述】"sun-java6-jdk的安装包" 暗示了这个压缩文件是为了在计算机系统上安装Java 6开发环境而设计的。JDK 6是Java平台的一个重要版本,包含了Java运行时环境(JRE)以及用于构建和测试Java程序的各种工具。此外,...

    jdk-1.7-java-7-openjdk-amd64.zip

    标题中的"jdk-1.7-java-7-openjdk-amd64.zip"表明这是一个Java开发工具包(JDK)的压缩文件,版本为1.7,适用于AMD64架构的Linux系统。OpenJDK是Java Development Kit的一个开源实现,由Oracle公司支持并维护。这个...

    java-jdk1.8-jdk-8u181-windows-x64.zip

    1. 解压缩下载的zip文件,找到“jdk-8u181-windows-x64.exe”。 2. 双击运行安装程序,按照向导提示进行安装。一般会选择默认的安装路径,但也可以根据需要自定义。 3. 在安装过程中,可以选择是否安装公共JRE(Java...

    Ubuntu下安装sun-java6-jdk和eclipse

    首先,确保SUN-JDK-6是系统默认的Java版本,使用`sudo update-java-alternatives -s java-6-sun`。 3. **编辑JVM配置文件**:编辑`/etc/jvm`,在文件顶部添加`/usr/lib/jvm/java-6-sun`,如果没有该文件则需自行...

    java-jdk1.8-jdk-8u202-linux-x64.zip

    1. **下载**:首先,你需要从Oracle官方网站或者通过提供的链接(blog.csdn.net/FL1623863129/article/details/134426730)下载适用于Linux x64的`java-jdk1.8-jdk-8u202-linux-x64.zip`压缩文件。确保文件完整无损...

    java-jdk1.8-jdk-8u191-linux-x64.zip

    这个压缩包文件“java-jdk1.8-jdk-8u191-linux-x64.zip”包含了用于在64位Linux系统上安装和使用的JDK 1.8更新191的所有必要组件。JDK(Java Development Kit)是开发和运行Java应用程序的基础,它包括了Java编译器...

    java-8-openjdk-amd64 资源包下载和解包方法.

    Java 8 开发工具包(Java Development Kit,简称JDK)是Java编程语言的重要组成部分,它包含了一系列用于开发和运行Java应用程序的工具。OpenJDK 是一个开源版本的 JDK,由 Oracle 公司主导并维护,它遵循GNU ...

    Java-JDK1.8-windows-x64位

    Java-JDK1.8-windows-x64位——免费不要积分!!! Java-JDK1.8-windows-x64位——免费不要积分!!! Java-JDK1.8-windows-x64位——免费不要积分!!! Java-JDK1.8-windows-x64位——免费不要积分!!! Java-JDK...

    java-jdk1.8-jdk-8u192-linux-x64.zip

    2. 解压后,你会得到一个名为`jdk-8u192-linux-x64.tar.gz`的文件,使用`tar -zxvf jdk-8u192-linux-x64.tar.gz`命令将其解压到指定目录。 3. 接着,需要将JDK的安装路径添加到系统的`PATH`和`JAVA_HOME`环境变量中...

    java-jdk1.6-jdk-6u45-windows-x64.zip

    1. 解压缩"java-jdk1.6-jdk-6u45-windows-x64.zip"文件,这将释放出"jdk-6u45-windows-x64.exe"可执行文件。 2. 双击运行"jdk-6u45-windows-x64.exe",安装向导会引导你完成安装过程。通常,你需要选择安装路径,...

    CentOS JAVA jdk-8u202-linux-x64 脚本安装包

    1. **上传文件**:首先,你需要将`jdk-8u202-linux-x64.tar.gz`文件从本地机器通过FTP、SCP或类似工具上传到CentOS服务器的指定目录,例如 `/opt/downloads`。这一步确保了JDK的安装文件在服务器上可用。 2. **解压...

    java-jdk1.8-jdk-8u192-windows-x64.zip

    描述中提到"安装方式:双击安装即可",这意味着用户在Windows环境下只需简单地双击解压后的"jdk-8u192-windows-x64.exe"文件,就可以启动安装过程。这个.exe文件是一个可执行程序,会引导用户完成安装向导,包括选择...

    java-jdk1.8-jdk-8u151-linux-x64.zip

    1. **下载**:首先,你需要从Oracle官方网站或可信的第三方源下载`java-jdk1.8-jdk-8u151-linux-x64.zip`压缩文件。确保文件的完整性和安全性,可以通过检查MD5或SHA校验和来验证。 2. **解压**:使用`unzip`命令将...

    Java文档-jdk-6u10-docs-java类库6.0-高压缩第一部分

    Java文档-jdk-6u10-docs-java类库6.0-高压缩第一部分,这个标题揭示了我们关注的是Java开发工具包(JDK)的6u10版本的官方文档,这部分主要聚焦在Java类库的6.0版。Java作为一门广泛使用的面向对象的编程语言,它的...

    java jdk-8u60-windows-x64

    安装`jdk-8u60-windows-x64.exe`后,系统会包含JRE(Java Runtime Environment)和开发工具,如Java编译器(javac)、Java虚拟机(JVM)、Java文档生成器(javadoc)以及Java调试器(jdb)等。这些工具对于开发和...

    java-jdk-8u51-windows-x64.exe.zip

    5. **安装过程**: "jdk-8u51-windows-x64.exe"是JDK的安装程序,双击运行后,用户可以选择安装路径、设置环境变量等,确保Java开发环境的正确配置。 6. **More.txt**:这个文件可能是安装指南、更新日志或者关于JDK...

    java jdk-8u51-windows-i586.exe

    压缩包中的"jdk-8u51-windows-i586.exe"是安装程序,用户可以通过双击执行来安装Java JDK。"More.txt"可能包含了关于这个版本的更多信息,比如更新日志、安装指南或者许可协议等。用户在安装前应仔细阅读此文件,...

    java-unrar-0.5.jar、commons-logging-1.2.jar和ant-1.6.5.jar

    Java解压缩技术是Java开发中常见的一种操作,特别是在处理数据传输和存储时。在这个场景中,我们关注的是三个特定的Java库:`java-unrar-0.5.jar`、`commons-logging-1.2.jar`和`ant-1.6.5.jar`,它们在处理ZIP和RAR...

    java-jdk1.8-jdk-8u172-linux-x64.zip

    对于Linux x64平台的用户,下载的压缩包文件名为"jdk-8u172-linux-x64.tar.gz",这是一个典型的Linux归档文件,采用gzip压缩格式。用户需要使用解压命令如`tar -zxvf jdk-8u172-linux-x64.tar.gz`来提取文件。解压后...

Global site tag (gtag.js) - Google Analytics