如何使用ant脚本在分布式系统中创建文件?

时间:2011-05-26 13:18:07

标签: file scripting ant websphere-mq-fte

我正在使用mqfte。我必须在传输到目标后创建一个与源文件同名的空txt文件。怎么用ant脚本呢?

情景:

Srcpath:\ src \ test.dat destpath:\ dest \ test.dat

从src路径移动文件后,我需要使用ant脚本在src路径中创建一个空文件test.dat吗?怎么办呢?

1 个答案:

答案 0 :(得分: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中引用表达式中第一个捕获的组。使用括号定义组。)

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