2011-05-26 39 views
0

我正在与mqfte合作。在将文件传输到目标文件后,我必须创建一个与源文件具有相同名称的空txt文件。如何使用ant脚本来做到这一点?如何使用ant脚本在分布式系统中创建文件?

场景:

Srcpath:\ SRC \ TEST.DAT destpath:\ DEST \ TEST.DAT

文件后从SRC路径移动,我需要创建一个空文件TEST.DAT在使用ant脚本的src路径中?如何才能做到这一点?

回答

1

在传输文件之前,可以使用Touch任务在临时目录中创建与将要传输的文件(重复使用相同的文件集)相匹配的新空文件。传输完成后,您可以使用Move任务将空文件复制到您的src目录中。您可以在Move任务中使用overwrite =“false”来确保保留在src目录中的文件不会被替换(例如,如果您想确保只有空文件才能成功传输)。

这里是一个例子。

<project default="test"> 

    <target name="test"> 

    <touch> 
     <fileset dir="src"> 
     <include name="test*"/> 
     </fileset> 
     <mapper type="regexp" from="(.*)" to="tmp/\1"/> 
    </touch> 

    <move todir="dest"> 
     <fileset dir="src"> 
     <include name="test*"/> 
     <!-- simulate file not transferred --> 
     <exclude name="test.doc"/> 
     </fileset> 
     <globmapper from="test.*" to="result_*.txt"/> 
    </move> 


    <move todir="src" overwrite="false"> 
     <fileset dir="tmp"/> 
    </move> 

    </target> 

</project> 

第一步代表您的转移。一个文件(test.doc)不会移出src目录(模拟失败的传输)。您可以测试是否在src目录中创建了包含一些内容的文件。目标完成后,test.doc仍应具有其原始内容。其他文件应该是空的。

针对你对正则表达式映射问题:

<mapper type="regexp" from="(.*)" to="tmp/\1"/> 

这整个输入文件名的捕获到一组...

from="(.*)" 

,并预置“TMP /”来被捕获的组...

to="tmp/\1" 

(在正则表达式中\1指的是第一个capt在表达中ured组。 )

因此,从src/somefile.txt开始,我们将somefile.txt作为映射器的输入文件,我们将其转换为tmp/somefile.txt

+0

谢谢Sudocode !!!!!!!! – trilawney 2011-05-27 09:58:29

+0

在触摸任务中,(to =“tmp/\ 1)参数是干什么用的?你能解释一下吗...在apache站点不清楚... – trilawney 2011-05-31 10:02:55

+0

非常感谢!!!!!!! !!!!!! – trilawney 2011-06-06 07:49:02