web-dev-qa-db-ja.com

Groovyの特定のファイルタイプに一致するすべてのファイルの再帰的なリスト

Groovyの特定のファイルタイプに一致するすべてのファイルを再帰的にリストしようとしています。 この例 はほとんどそれを行います。ただし、ルートフォルダー内のファイルは表示されません。これを変更して、ルートフォルダー内のファイルを一覧表示する方法はありますか?または、別の方法がありますか?

36
shikarishambu

これで問題が解決するはずです。

import static groovy.io.FileType.FILES

new File('.').eachFileRecurse(FILES) {
    if(it.name.endsWith('.groovy')) {
        println it
    }
}

eachFileRecurseは、ファイルのみに関心があることを指定する列挙型FileTypeを取ります。残りの問題は、ファイル名でフィルタリングすることで簡単に解決できます。 eachFileRecurseは通常、ファイルとフォルダーの両方を再帰的に処理しますが、eachDirRecurseはフォルダーのみを検出することに注意してください。

82
xlson

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
}
15
Toumi
// Define closure
def result

findTxtFileClos = {

        it.eachDir(findTxtFileClos);
        it.eachFileMatch(~/.*.txt/) {file ->
                result += "${file.absolutePath}\n"
        }
    }

// Apply closure
findTxtFileClos(new File("."))

println result
4
Aaron Saunders

eachDirRecurseeachFileRecurseに置き換えれば動作します。

4
Riduidel