如何将文件的Ant读取行变为逗号分隔属性?

时间:2013-11-22 14:39:06

标签: ant

我想知道哪种方法是将文件内容读入逗号分隔属性的最简单方法,该属性适合作为files filelist属性的参数。我有两个解决方案,但我对其中任何一个都不满意,我想问一下是否有人知道更好(更短)的方式。

这只适用于较新的Ants,它似乎不值得信任,因为输入文件的每一行都以basedir为前缀,这使得必须调用flattenmapper来删除目录试。

<pathconvert property="files2" pathsep=",">
  <resources>
    <resourcelist>
      <file file="IMPORT"/>
    </resourcelist>
  </resources>
  <flattenmapper/>
</pathconvert>

在这个例子中有人知道如何避免flattenmapper吗?我尝试在basedir中指定file属性,但它没有效果。

另一种方法是loadfilefilterchain

<loadfile property="files1" srcFile="IMPORT">
  <filterchain>
    <tokenfilter>
      <replaceregex pattern="$" replace=","/>
    </tokenfilter>
    <striplinebreaks/>
    <tokenfilter>
      <replaceregex pattern=",$" replace=""/>
    </tokenfilter>
  </filterchain>
</loadfile>

这对我来说似乎更好,因为它也适用于较老的蚂蚁,但输入更多。

有更短的路吗?

1 个答案:

答案 0 :(得分:1)

在导入文件中使用相对路径时,flattenmapper的替代方法是使用&lt; mappedresources&gt;如:

<pathconvert property="files2" pathsep=",">
  <resources>
   <mappedresources>
    <resourcelist>
      <file file="IMPORT"/>
    </resourcelist>
    <globmapper from="*" to="${my.base.dir}/*"/>
   </mappedresources>
  </resources>
  <flattenmapper/>
</pathconvert>