Ant步步为营(5)用for和foreach的方法遍历一个文件夹,查找到某个文件并删除

今天有个任务是要删除VM上的某个文件夹下的两个jar包。不过这个任务没有分配给我,而是分配给俺的师傅,哈哈。不过我还是自己动手写了一些脚本在本地模拟一下删除某个指定文件。

build.xml

<?xml version="1.0"?>
    <project name="ForTest"
default="build" >
  
 <property file="build.properties"></property>
  
     <!-- import the ant contrib package for using the
for or foreach -->
        <taskdef
resource="net/sf/antcontrib/antlib.xml"/>  
  
     <!-- for achieving the traversal of folder with
"foreach" tag -->
        <target
name="foreach">
      
         <echo message="Folders in
the directory are:"/>
      
         <foreach
target="delete_file" param="dir.name">
  
   
            
<path>
      
                
<!--<dirset dir="${file.dir}" includes="*"/>-->
  
   
           
     <fileset dir="${file.dir}" includes="jar.zip"
></fileset>
      
            
</path>
      
        
</foreach>
           
</target>
        <!-- for achieving
the traversal of folder with "for" tag -->
      
 <target name="for">
  
         <echo message="Folders in the
directory are:"/>
          
 <for param="dir.name">
  
           
 <path>
           
         <dirset dir="${file.dir}"
includes="*" />
           
         <fileset dir="${file.dir}"
includes="*" ></fileset>
        
        </path>
  
           
 <sequential>
          
         <echo
message="@{dir.name}"/>
          
     </sequential>
      
     </for>
      
 </target>
      
     <!-- print the file under the
folder-->
           <target
name="list.dirs">
  
             <echo
message="${dir.name}"/>
          
</target>
        
  
     <!---delete file -->
  
      <target
name="delete_file">
  
          <delete file="${dir.name}">
  
                
 
           
 </delete>
        
</target>
          
 
            <target
name="build" depends="foreach" description="Test For
loop"/>
    </project>

build.properties

file.dir=G:\\_files

我先解释一下这个ant的运行顺序:

<project name="ForTest" default="build"
>

先由这句入口找到build这个target。

也就是

<target name="build"
depends="foreach" description="Test For loop"/>

这一句依赖foreach这个target,会找到

<target name="foreach">

一句一句执行,当执行到

<foreach target="delete_file"
param="dir.name">

回去找delete_file这个target,也就是

<target name="delete_file">。

注意:

> <fileset dir="${file.dir}" includes="jar.zip"
></fileset>这句是要找出想要删除的zip包,在这里也就是jar.zip

> 现在脚本中用的遍历方式是ant contrib包下的foreach的方式遍历的。for的方式没有用到但是还是写出来了。

> <taskdef resource="net/sf/antcontrib/antlib.xml"/> 
加上这一句才可以用for或者是foreach的方式遍历(有多种方法引入,share一个网址:http://blog.csdn.net/sodino/article/details/16923615)

>  这里面可能还比较疑惑的就是:红色标注的地方,这个参数也就是遍历的时候用到的。

<delete file="${dir.name}">这一句中的dir.name用的是用

<foreach target="delete_file" param="dir.name">遍历出来的文件名。

Ant步步为营(5)用for和foreach的方法遍历一个文件夹,查找到某个文件并删除

时间: 2024-10-13 02:04:49

Ant步步为营(5)用for和foreach的方法遍历一个文件夹,查找到某个文件并删除的相关文章

【Java】利用ant插件压缩文件夹及其所有子文件与子文件夹

如果在Java要压缩一个文件夹及其所有子文件与子文件夹,可以利用到Apache公司提供的ant插件.其实也就是一个jar包. 比如,如果要把f:\bb下的所有文件,压缩成一个f:\bb.zip,如下图: 首先先到Apache的官网,下载ant插件,地址:http://ant.apache.org/bindownload.cgi(点击打开链接) 下载解压之后,取走其中的apache-ant-1.9.4\lib下的ant.jar放到你的java工程就行: 比如拷贝到你的java工程,目录结构如下图,

Ant学习---第二节:Ant添加文件夹和文件夹集的使用

一.创建 java 项目(Eclipse 中),结构图如下: 1.创建 .java 文件,代码如下: package com.learn.ant; public class HelloWorld { public static void main(String[] args) { for(String arg : args) System.out.println("Hello World" + arg); } } 2.创建 build.xml 文件,代码如下: <?xml ver

Ant步步为营(3)在svn上checkout code.

马上下班了,在发一篇吧.今天这个的时候发现好多好的网址,所以提前发了. 老规矩:build.xml <?xml version="1.0"?>    <project name="StartProduct" default="checkout.testcode" >    <property file="build.properties"></property> <!--引

Ant步步为营(2)在ftp上下载需要的文件

早上好,开始一天工作之前先踩踩了园子,今天介绍ftp上下载文件. <?xml version="1.0"?>    <project name="ForTest" default="ftp.download" >    <property file="build.properties"></property>        <target name= "ftp.d

Ant步步为营(4)ant启动tomcat

前序: 最近产品要release,一直忙着测试,没有时间学习ant了,今天终于没什么事了赶紧写点东西.这个启动tomcat是好些天之前写的了.在这里跟大家分享一下. build.xml <?xml version="1.0"?>    <project name="ForTest" default="start_tomcat" >    <property file="build.properties&qu

Java中forEach, 用来遍历数组

这里的for是Java中forEach, 用来遍历数组的.for(int i : d) 就是遍历int型数组d的 每一次访问数组d的时候读取的数据放入int型的i中.和for(int i=0;i<d.length();i++)是一样的,但是forEach的可用场合较多. public class e1 {public static void main(String[] args){ int[]d=new int[] {1,2,3,4,64,1234,3124,657,22}; System.ou

编写高质量代码改善C#程序的157个建议——建议17:多数情况下使用foreach进行循环遍历

建议17:多数情况下使用foreach进行循环遍历 由于本建议涉及集合的遍历,所以在开始讲解本建议之前,我们不妨来设想一下如何对结合进行遍历.假设存在一个数组,其遍历模式可以采用依据索引来进行遍历的方法:又假设存在一个HashTable,其遍历模式可能是按照键值来进行遍历.无论是哪个集合,如果他们的遍历没有一个公共的接口,那么客户端在进行遍历时,相当于是对具体类型进行了编码.这样一来,当需求发生变化时,必须修改我们的代码.而且,由于客户端代码过多地关注了集合内部的实现,代码的可移植性就会变得很差

原生JS forEach()和map()遍历的区别以及兼容写法

一.原生JS forEach()和map()遍历 共同点: 1.都是循环遍历数组中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前项的索引index,原始数组input. 3.匿名函数中的this都是指Window. 4.只能遍历数组. 1.forEach() 没有返回值. arr[].forEach(function(value,index,array){ //do something }) 参数:value数组中的当前项,

在Ant Build文件中使用正则表达式替换文件内容

这需要在build文件中使用<replaceregexp>标签, 这个标签的使用大概是这个样子的: 1 <replaceregexp file="${src}/build.properties" 2 match="OldProperty=(.*)" 3 replace="NewProperty=\1" 4 byline="true" 5 /> 注意,Ant默认是不认识这个标签的,为了使用这个标签,需要在