在生活中,我们会经常会用到数据压缩或解压缩的功能,虽然在pc或移动端有很多不错的压缩软件,但是当真正开发的时候,我们如果需要在代码中集成压缩和解压缩的功能就不太容易了,不过还好,现在有许多开源代码或易用的封装框架来帮我们实现压缩和解压缩的过程。
这次我们就来进行一个压缩指定文件夹的小例子:应用的是Ant,这个强大的工具。
项目结构如下图:
我们要压缩的文件夹中的内容是下图:
主类:ZipCompressorByAnt.java代码如下:
package com.acconsys.vpm.util;
import java.io.File;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Zip;
import org.apache.tools.ant.types.FileSet;
/**
* @ClassName: ZipCompressorByAnt
* @author : burns
* @Description: 压缩文件的通用工具类-采用ant中的org.apache.tools.ant.taskdefs.Zip来实现,更加简单。
*
*/
public class ZipCompressorByAnt {
private File zipFile;
/**
* 压缩文件构造函数
* @param pathName 最终压缩生成的压缩文件:目录+压缩文件名.zip
*/
public ZipCompressorByAnt(String finalFile) {
zipFile = new File(finalFile);
}
/**
* 执行压缩操作
* @param srcPathName 需要被压缩的文件/文件夹
*/
public void compressExe(String srcPathName) {
File srcdir = new File(srcPathName);
if (!srcdir.exists()){
throw new RuntimeException(srcPathName + "不存在!");
}
Project prj = new Project();
Zip zip = new Zip();
zip.setProject(prj);
zip.setDestFile(zipFile);
FileSet fileSet = new FileSet();
fileSet.setProject(prj);
fileSet.setDir(srcdir);
//fileSet.setIncludes("**/*.java"); //包括哪些文件或文件夹 eg:zip.setIncludes("*.java");
//fileSet.setExcludes(...); //排除哪些文件或文件夹
zip.addFileset(fileSet);
zip.execute();
}
public static void main(String[] args) {
ZipCompressorByAnt zipCompressorByAnt = new ZipCompressorByAnt("D:\\test\\compress2zipbyant.zip");
zipCompressorByAnt.compressExe("D:\\test");
}
}
执行完这个类之后会在test目录下多出一个压缩包compress2zipbyant.zip,如下图:
如果想获取源代码和相关jar包,就戳这里吧:http://pan.baidu.com/s/1bTjL0M