java 使用Apache ant.jar压缩解压zip--一种简单的实现

时间:2022-07-11 09:11:07
package com.test;

import java.io.File;

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;


/**
* 利用Apache ant.jar中的ant包进行Zip压缩和解压
* 这个更为简单
*/
public class ZipUtil {

public static void main(String[] args) {

//jzb.zip("d:/Workspaces", "d:/upload.zip");

unZip("d:/a", "d:/a/a.zip");
}

/**
* 解压缩
* @param destDir 生成的目标目录下 c:/a
* @param sourceZip 源zip文件 c:/upload.zip
* 结果则是 将upload.zip文件解压缩到c:/a目录下
*/
public static void unZip(String destDir,String sourceZip){

Project prj1 = new Project();

Expand expand = new Expand();

expand.setProject(prj1);

expand.setSrc(new File(sourceZip));

expand.setOverwrite(false);//是否覆盖

File file = new File(destDir);

if(!file.exists())file.mkdir();

expand.setDest(file);

expand.execute();
}


/**
* 压缩
*
* @param sourceFile
* 压缩的源文件 如: c:/upload
* @param targetZip
* 生成的目标文件 如:c:/upload.zip
*/
public static void zip(String sourceFile,String targetZip){

Project prj = new Project();

Zip zip = new Zip();

zip.setProject(prj);

zip.setDestFile(new File(targetZip));//设置生成的目标zip文件File对象

FileSet fileSet = new FileSet();

fileSet.setProject(prj);

fileSet.setDir(new File(sourceFile));//设置将要进行压缩的源文件File对象

//fileSet.setIncludes("**/*.java"); //包括哪些文件或文件夹,只压缩目录中的所有java文件

//fileSet.setExcludes("**/*.java"); //排除哪些文件或文件夹,压缩所有的文件,排除java文件

zip.addFileset(fileSet);

zip.execute();

}
}