我正在使用mqfte。在将源文件传输到目的地后,我必须创建一个与源文件同名的空txt文件。如何使用ant脚本做到这一点?
场景:
Srcpath:\src\test.datdestpath:\dest\test.dat
文件从src路径移动后,我需要使用ant脚本在src路径中创建一个空文件test.dat?如何做到这一点?
在传输文件之前,您可以使用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应该仍然有其原始内容。其他文件应为空。
在回答您关于regexp映射器的问题时:
<mapper type="regexp" from="(.*)" to="tmp/1"/>
这将整个传入文件名捕获到一个组中。。。
from="(.*)"
并将"tmp/"添加到捕获的组。。。
to="tmp/1"
(在正则表达式中,1
是指表达式中捕获的第一个组。组使用括号定义。)
因此,从src/somefile.txt
,我们将获得somefile.txt
作为映射器的输入文件,并将其转换为tmp/somefile.txt
。