2013-11-22 21 views
4

我想知道哪一個是最簡單的方法來讀取文件的內容到一個逗號分隔的屬性適合作爲files屬性的參數filelist。我有兩個解決方案,但我對他們中的任何一個都不滿意,我想問問有沒有人知道更好(更短)的方法。如何讓螞蟻將文件的行讀入逗號分隔的屬性?

這隻適用於較新的螞蟻,它似乎不可信,因爲輸入文件的每一行都以basedir作爲前綴,這使得必須再次調用flattenmapper來刪除該目錄。

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

有沒有人知道在這個例子中如何避免flattenmapper?我試圖在file中指定basedir屬性,但它沒有效果。

另一種方法是loadfilefilterchain

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

這似乎與我有益的,因爲它的工作原理也與舊的螞蟻,但它更打字。

有沒有更簡單的方法?

+0

我會認爲你很釘它...請問爲什麼使用flattenmapper在第一個例子中對你感到困擾? –

+0

@PatriceM。它使得不可能在文件列表中使用相對目錄名稱。它們無法在'flattenmapper'中生存,因爲'flattenmapper'刪除所有目錄。 – ceving

+0

感謝您的澄清。也許構造可以提供幫助(請參閱下面的更詳細的答案) –

回答

1

另一種導入文件使用相對路徑時使用<mappedresources>在以flattenmapper:

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