Groovyの特定のファイルタイプに一致するすべてのファイルを再帰的にリストしようとしています。 この例 はほとんどそれを行います。ただし、ルートフォルダー内のファイルは表示されません。これを変更して、ルートフォルダー内のファイルを一覧表示する方法はありますか?または、別の方法がありますか?
これで問題が解決するはずです。
import static groovy.io.FileType.FILES
new File('.').eachFileRecurse(FILES) {
if(it.name.endsWith('.groovy')) {
println it
}
}
eachFileRecurse
は、ファイルのみに関心があることを指定する列挙型FileTypeを取ります。残りの問題は、ファイル名でフィルタリングすることで簡単に解決できます。 eachFileRecurse
は通常、ファイルとフォルダーの両方を再帰的に処理しますが、eachDirRecurse
はフォルダーのみを検出することに注意してください。
groovyバージョン2.4.7:
new File(pathToFolder).traverse(type: groovy.io.FileType.FILES) { it ->
println it
}
次のようなフィルターを追加することもできます
new File(parentPath).traverse(type: groovy.io.FileType.FILES, nameFilter: ~/patternRegex/) { it ->
println it
}
// Define closure
def result
findTxtFileClos = {
it.eachDir(findTxtFileClos);
it.eachFileMatch(~/.*.txt/) {file ->
result += "${file.absolutePath}\n"
}
}
// Apply closure
findTxtFileClos(new File("."))
println result
eachDirRecurse
をeachFileRecurse
に置き換えれば動作します。