我正在与 mqfte 合作。在将源文件传输到目的地后,我必须创建一个与源文件同名的空 txt 文件。如何使用 ant 脚本做到这一点?
设想:
源路径:\src\test.dat 目标路径:\dest\test.dat
文件从 src 路径移动后,我需要使用 ant 脚本在 src 路径中创建一个空文件 test.dat 吗?如何才能做到这一点?
我正在与 mqfte 合作。在将源文件传输到目的地后,我必须创建一个与源文件同名的空 txt 文件。如何使用 ant 脚本做到这一点?
设想:
源路径:\src\test.dat 目标路径:\dest\test.dat
文件从 src 路径移动后,我需要使用 ant 脚本在 src 路径中创建一个空文件 test.dat 吗?如何才能做到这一点?
在传输文件之前,您可以使用Touch任务在临时目录中创建与您将要传输的文件匹配的新空文件(重复使用相同的文件集)。传输完成后,您可以使用Move任务将空文件复制到您的 src 目录中。您可以在移动任务中使用 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
.