java使用 org.apache.tools.ant.taskdefs.Zip 类压缩文件

最近用到了压缩与解压文件,于是采用了ant的zip类,下面做下使用细节介绍

  • 压缩单个指定文件
  • 压缩对应目录指定的文件

压缩指定的文件

指定对应的目录下的文件名,可以为多个:
fileSet.setIncludes(“1.docx,1.doc”);
该方法的参数是文件名的列表,中间用逗号或则空格隔开,也可以采用通配符 eg:zip.setIncludes(“*.docx”); 用于设置要加压的文件或则文件夹
fileSet.setExcludes(“2.docx,2.doc”)
参数跟setIncludes一样,用于设置该目录下不想合并压缩的文件或则文件夹
对应的测试代码如下所示

/**
     * 执行压缩操作
     * @param srcPathName 需要被压缩的文件/文件夹
     */
    public void compressTest(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("1.docx,1.doc"); //包括哪些文件或文件夹 eg:zip.setIncludes("*.java");  
        //fileSet.setExcludes(...); //排除哪些文件或文件夹  可以使用支持通配符匹配也可以直接是该目录下的文件名字符串  eg:zip.setExcludes("a.java,b.txt,c.exe");
        zip.addFileset(fileSet);  
        zip.execute();  
    }

setIncludes 可以看下apache提供的zip jar源码 ,它实际上是采用的空格与逗号进行文件名的分解,采用这个方法就得注意了文件名不能有空格的哦,要是文件名有空格,那就看下面的方法吧,待会奉上免费下载地址

下面提供多文件压缩的另一种方法

private File zip(String zipFilePath ,String fileNames, String srcPath) {
        File zipFile = new File(zipFilePath);
         File srcdir = new File(srcPath); 
        Project prj = new Project();  
        Zip zip = new Zip();  
        zip.setProject(prj);  
        zip.setDestFile(zipFile);  
        FileSet fileSet = new FileSet();  
        fileSet.setProject(prj);  
        fileSet.setDir(srcdir);  
        String names[] = fileNames.split(",");
        for(String name: names){
            fileSet.createInclude().setName(name); //通过这种方法添加多个文件,相当于自己做了zip中的分解分解名的这步
        }
        zip.addFileset(fileSet);
        zip.setEncoding("gbk");  
        zip.execute();  
        return zipFile;
    }

通过fileSet.createInclude().setName来实现添加要压缩的文件,实现多文件压缩


最后附上相关jar的下载地址:

ant-1.8.4.jar tools.jar


版权声明:本文为u014306354原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。