Groovy:获取目录中所有文件的列表(recursion)

新手问题:

我试图得到(不打印,这很容易)的目录中的文件列表,它是子目录。 我试过了:

def folder = "C:\\DevEnv\\Projects\\Generic"; def baseDir = new File(folder); files = baseDir.listFiles(); 

但是我只拿到钱。 我也试过了

 def files = []; def processFileClosure = { println "working on ${it.canonicalPath}: " files.add (it.canonicalPath); } baseDir.eachFileRecurse(FileType.FILES, processFileClosure); 

但在封闭范围内不能识别“文件”。

我如何获得列表?

这段代码适用于我:

 import groovy.io.FileType def list = [] def dir = new File("path_to_parent_dir") dir.eachFileRecurse (FileType.FILES) { file -> list << file } 

之后,listvariables包含给定目录及其子目录的所有文件(java.io.File):

 list.each { println it.path } 

较新版本的Groovy(1.7.2+)提供了JDK扩展,可以更轻松地遍历目录中的文件,例如:

 import static groovy.io.FileType.FILES def dir = new File("."); def files = []; dir.traverse(type: FILES, maxDepth: 0) { files.add(it) }; 

有关更多示例,另请参见[1]。

[1] http://mrhaki.blogspot.nl/2010/04/groovy-goodness-traversing-directory.html

如果这有助于其他人,下面的工作在我的Gradle / Groovy为build.gradle为Android项目,而不必导入groovy.io.FileType(注意:不递解子目录,但是当我发现这个解决scheme,我不再关心recursion,所以你可能不会):

  FileCollection proGuardFileCollection = files { file('./proguard').listFiles() } proGuardFileCollection.each { println "Proguard file located and processed: " + it }