使用对Ant编程来实现简单文件的打包
kongxx
Ant是我们熟悉的Java构建工具,通常我们使用Ant是通过build.xml文件来实现任务的调用,其实不仅如此,我们还也可以通过编程的方式来实现任务调用,从而简化我们的开发。以下是我很久以前写的一个关于使用Ant打包文件的程序片段,最近做东西又翻了出来,简单整理了一下,程序片段如下:
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;
public class Package { public static void main(String[] args) { Package p1 = new Package(); String strDir1 = "f://Test"; String strDestFile1 = "f://test1.zip"; p1.pack(strDir1 ,strDestFile1);
Package p2 = new Package(); String strDir2 = "f://Test"; String strDestFile2 = "f://test2.zip"; String[] filenames2 = {"test1//test11//*" ,"test1//test12//*"}; p2.pack(strDir2 ,filenames2,strDestFile2);
} /** * 打包一个目录 * @param strDir 要打包的目录 * @param strDestFile 要打包的压缩文件路径 */ public void pack(String strDir ,String strDestFile) { pack(new File(strDir),new File(strDestFile)); } /** * 打包一个目录 * @param fDir 要打包的目录对象 * @param fDestFile 要打包的压缩文件对象 */ public void pack(File fDir ,File fDestFile) { Zip zip = new Zip(); zip.setProject(new Project()); zip.setTaskName("default"); zip.setBasedir(fDir);
zip.setDestFile(fDestFile); zip.execute(); } /** * 打包一个目录下一定范围内的文件 * @param fDir 要打包的目录对象 * @param filenames 要包含的文件列表。是相对要打包目录的相对路径 * @param fDestFile 要打包的压缩文件对象 */ public void pack(File fDir ,String[] filenames ,File fDestFile) { Zip zip = new Zip(); zip.setProject(new Project()); zip.setTaskName("default"); zip.setDestFile(fDestFile);
FileSet fs = new FileSet(); fs.setDir(fDir); for(int i = 0 ; i < filenames.length ; i++) { fs.setIncludes(filenames[i]); } zip.addFileset(fs); zip.execute(); } /** * 打包一个目录下一定范围内的文件 * @param strDir 要打包的目录对象 * @param filenames 要包含的文件列表。是相对要打包目录的相对路径 * @param strDestDir 要打包的压缩文件对象 */ public void pack(String strDir ,String[] filenames ,String strDestDir) { pack(new File(strDir) ,filenames ,new File(strDestDir)); } /** * * @param strSrcZip * @param strDestDir */ public void unpack(String strSrcZip ,String strDestDir) { unpack(new File(strSrcZip) ,new File(strDestDir)); }
/** * * @param fSrcZip * @param fDestDir */ public void unpack(File fSrcZip ,File fDestDir) { Expand expand = new Expand(); expand.setProject(new Project()); expand.setSrc(fSrcZip); expand.setDest(fDestDir); expand.setOverwrite(true); expand.execute(); } } |
从代码看仅仅几行代码就解决了原来我们需要写得几十行代码,其实Ant还可以替我们完成许多工作,仅仅通过很少的代码,就可以实现,那何乐而不为呢。