首页 > 解决方案 > 带有空输入字符串的 apache Ant 基本名称问题

问题描述

我有下面的 ant 代码,它从位置 input.dir 给出文件的基本名称(例如:abc_01142018.txt)。当文件可用时,它按预期工作。但是当 input.dir 中没有文件时,它会获取一个我没有传递的值。我期望它是空值。

我阅读了关于 basename 的内容,但没有提到当输入参数为空时 basename 如何工作。

<path id="ref-id">
    <fileset dir="${input.dir}">
        <include name="abc*.txt"/>
    </fileset>
</path>
<property name="input.files" refid="ref-id"/>
<basename property="input.file" file="${input.files}" />

标签: ant

解决方案


如果您想要的只是没有父目录的文件名列表,则无需使用 Ant 的path类型或任务。basenamefileset类型已经这样做了,所以只需引用它的 ID。

例子:

<target name="test">
    <touch file="exists1.txt" />
    <touch file="exists2.txt" />

    <fileset dir="." id="exists">
        <include name="exists*.txt" />
    </fileset>

    <fileset dir="." id="doesnotexist">
        <include name="doesnotexist*.txt" />
    </fileset>

    <property name="exists" refid="exists" />
    <property name="doesnotexist" refid="doesnotexist" />

    <echo message="${exists}" />
    <echo message="${doesnotexist}" />
</target>

推荐阅读