用 ant.jar 打包文件夹

使用 Maven 环境,添加 ant 依赖包,如下:

<dependency>
    <groupId>org.apache.ant</groupId>
    <artifactId>ant</artifactId>
    <version>1.9.4</version>
    <optional>true</optional>
</dependency>

 

在对文件及文件夹打包的时候,会有各种过滤条件或要求,以下为自己使用过程中的笔记:

 

1. 根据文件大小:

@Test
public void testFilterSize2Zip() throws Exception {
    Project project = new Project();

    Zip zip = new Zip();
    zip.setProject(project);

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

    FileSet fileSet = new FileSet();
    fileSet.setProject(project);

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

    SizeSelector sizeSelector = new SizeSelector();
    sizeSelector.setValue(1L);

    SizeSelector.SizeComparisons sizeComparisons = new SizeSelector.SizeComparisons();
    sizeComparisons.setValue(Comparison.GREATER_EQUAL.getValue());
    sizeSelector.setWhen(sizeComparisons);
    fileSet.addSize(sizeSelector);

    zip.addFileset(fileSet);
    zip.execute();
}

2. 按照文件名称过滤

@Test
    public void testProjectZip() throws Exception {
        Project project = new Project();

        Zip zip = new Zip();
        zip.setProject(project);

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

        FileSet fileSet = new FileSet();
        fileSet.setProject(project);

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

        FilenameSelector filenameSelector = new FilenameSelector();
        filenameSelector.setRegex("1.*");
//        filenameSelector.setName("1.*");
        filenameSelector.setCasesensitive(true);
        filenameSelector.setNegate(false);


        fileSet.addFilename(filenameSelector);

        zip.addFileset(fileSet);
        zip.execute();

    }

3. 按照文件时间过滤

@Test
    public void testProjectZip() throws Exception {
        Project project = new Project();

        Zip zip = new Zip();
        zip.setProject(project);

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

        FileSet fileSet = new FileSet();
        fileSet.setProject(project);

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

        DateSelector dateSelector = new DateSelector();
        dateSelector.setMillis(System.currentTimeMillis());
        dateSelector.setGranularity(1);
        dateSelector.setWhen(TimeComparison.BEFORE);
        dateSelector.setCheckdirs(true);
        fileSet.addDate(dateSelector);

        zip.addFileset(fileSet);
        zip.execute();
    }

4. 按照文件夹深度过滤

@Test
    public void testProjectZip() throws Exception {
        Project project = new Project();

        Zip zip = new Zip();
        zip.setProject(project);

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

        FileSet fileSet = new FileSet();
        fileSet.setProject(project);

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

        DepthSelector depthSelector = new DepthSelector();
        depthSelector.setMax(3);
        depthSelector.setMin(1);

        fileSet.addDepth(depthSelector);

        zip.addFileset(fileSet);
        zip.execute();
    }

5. 根据文件校验算法过滤

@Test
    public void testProjectZip() throws Exception {
        Project project = new Project();

        Zip zip = new Zip();
        zip.setProject(project);

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

        FileSet fileSet = new FileSet();
        fileSet.setProject(project);

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

        ModifiedSelector modifiedSelector = new ModifiedSelector();
        ModifiedSelector.AlgorithmName algorithmName = new ModifiedSelector.AlgorithmName();
        //"hashvalue", "digest", "checksum"
        algorithmName.setValue("checksum");
        modifiedSelector.setAlgorithm(algorithmName);

        fileSet.addModified(modifiedSelector);


        zip.addFileset(fileSet);
        zip.execute();

    }

6. 根据文件属性过滤

@Test
    public void testProjectZip() throws Exception {
        Project project = new Project();

        Zip zip = new Zip();
        zip.setProject(project);

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

        FileSet fileSet = new FileSet();
        fileSet.setProject(project);

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

        ReadableSelector readableSelector = new ReadableSelector();
        Resource resource = new Resource();
        resource.setDirectory(true);
        resource.setExists(true);
        readableSelector.isSelected(resource);
        fileSet.addReadable(readableSelector);

        zip.addFileset(fileSet);
        zip.execute();

    }

 

当然,还有其他类型的过滤方式,剩下的方式,请读者自行挖掘。

 

 

 

 

 

 

转载于:https://my.oschina.net/Rayn/blog/1555007

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
[CLASS] org.apache.tools.ant.Main org.apache.tools.ant.Task org.apache.tools.bzip2.CRC org.apache.tools.ant.Target org.apache.tools.ant.Project org.apache.tools.zip.ZipFile org.apache.tools.zip.ZipLong org.apache.tools.ant.Executor org.apache.tools.ant.Location org.apache.tools.tar.TarEntry org.apache.tools.tar.TarUtils org.apache.tools.zip.UnixStat org.apache.tools.zip.ZipEntry org.apache.tools.zip.ZipShort org.apache.tools.ant.XmlLogger org.apache.tools.tar.TarBuffer org.apache.tools.zip.JarMarker org.apache.tools.zip.ZipFile$1 org.apache.tools.ant.BuildEvent org.apache.tools.ant.MagicNames org.apache.tools.ant.types.Path org.apache.tools.ant.BuildLogger org.apache.tools.ant.Diagnostics org.apache.tools.ant.FileScanner org.apache.tools.ant.TaskAdapter org.apache.tools.ant.TypeAdapter org.apache.tools.ant.XmlLogger$1 org.apache.tools.mail.MailMessage org.apache.tools.tar.TarConstants org.apache.tools.ant.taskdefs.Ant org.apache.tools.ant.taskdefs.Apt org.apache.tools.ant.taskdefs.Cvs org.apache.tools.ant.taskdefs.Ear org.apache.tools.ant.taskdefs.Get org.apache.tools.ant.taskdefs.Jar org.apache.tools.ant.taskdefs.Tar org.apache.tools.ant.taskdefs.War org.apache.tools.ant.taskdefs.Zip org.apache.tools.ant.types.DirSet org.apache.tools.ant.types.Mapper org.apache.tools.ant.BuildListener org.apache.tools.ant.DefaultLogger org.apache.tools.ant.Diagnostics$1 org.apache.tools.ant.ExitException org.apache.tools.ant.PathTokenizer org.apache.tools.ant.ProjectHelper org.apache.tools.ant.TaskContainer org.apache.tools.zip.AsiExtraField org.apache.tools.zip.ZipExtraField org.apache.tools.ant.taskdefs.Copy org.apache.tools.ant.taskdefs.Echo org.apache.tools.ant.taskdefs.Exec org.apache.tools.ant.taskdefs.Exit org.apache.tools.ant.taskdefs.GZip org.apache.tools.ant.taskdefs.Java org.apache.tools.ant.taskdefs.Move org.apache.tools.ant.taskdefs.Nice org.apache.tools.ant.taskdefs.Pack org.apache.tools.ant.taskdefs.Rmic org

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值