44

データが取り込まれたファイルセットがあり、一致するファイル名をテキスト ファイルに出力する必要があります。

私はこれを試しました:

<fileset id="myfileset" dir="../sounds">
    <include name="*.wav" />
    <include name="*.ogg" />
</fileset>

<property name="sounds" refid="myfileset" />
<echo file="sounds.txt">${sounds}</echo>

すべてのファイルをセミコロンで区切って 1 行に出力します。1 行に 1 つのファイルが必要です。OS コマンドの呼び出しや Java コードの記述に頼らずにこれを行うにはどうすればよいでしょうか?

更新

ああ、もっと具体的であるべきだった - リストにはディレクトリが含まれていてはならない。pathconvertコマンドはまさに私が見逃していたものだったので、とにかく ChssPly76 を受け入れられた回答としてマークしています。ディレクトリを削除してファイル名のみを一覧表示するには、「フラット化」マッパーを使用しました。

最終的に作成したスクリプトは次のとおりです。

<fileset id="sounds_fileset" dir="../sound">
    <include name="*.wav" />
    <include name="*.ogg" />
</fileset>

<pathconvert pathsep="&#xA;" property="sounds" refid="sounds_fileset">
    <mapper type="flatten" />
</pathconvert>

<echo file="sounds.txt">${sounds}</echo>
4

2 に答える 2

69

PathConvertタスクを使用します。

<fileset id="myfileset" dir="../sounds">
    <include name="*.wav" />
    <include name="*.ogg" />
</fileset>

<pathconvert pathsep="${line.separator}" property="sounds" refid="myfileset">
    <!-- Add this if you want the path stripped -->
    <mapper>
        <flattenmapper />
    </mapper>
</pathconvert>
<echo file="sounds.txt">${sounds}</echo>
于 2009-09-21T21:11:47.583 に答える