使用Ant生成逗号分隔的文件列表

时间:2009-07-19 10:31:14

标签: java ant

我正在尝试在当前目录下创建以逗号分隔的文件或目录列表。例如,假设我有以下文件夹结构:

Root
-- Directory1
-- Directory2
...

我想生成一个包含“Directory1,Directory2”的变量或属性。我试过在<dirset dir="." includes="*">上迭代(使用ant-contrib“for”任务),但这会生成绝对路径;然后,我使用“basename”任务提取文件名,但这反过来会生成输出属性。由于属性是不可变的,我在实践中得到的是“Directory1,Directory1,...”

有没有更好的方法来做到这一点,还是我必须编写Java扩展来为我做这个?

2 个答案:

答案 0 :(得分:10)

pathconvert任务可用于使用任意分隔符格式化dirset:

<dirset id="dirs" dir="." includes="*"/>
<pathconvert dirsep="/" pathsep="," property="dirs" refid="dirs"/>
<echo message="${dirs}"/>

答案 1 :(得分:4)

刚刚确认Jörn的回答正是我所需要的(作为起点)。

<dirset id="dirset.sandbox" dir="${sandbox.dir}" includes="*">
  <exclude name="output"/>
</dirset>
<pathconvert pathsep=" " property="dirs.sandbox" refid="dirset.sandbox">
  <mapper type="flatten"/>
</pathconvert>
<echo message="[*** the sandbox dir list is ${dirs.sandbox} ***]"/>

sandbox.dir是一个类似于/ root / build / workspace的绝对路径,包含几个子目录。 输出是这些目录的空格分隔列表。