Get a list of all the files in a directory (recursive)

前端 未结 4 927
灰色年华
灰色年华 2020-12-23 02:59

I\'m trying to get (not print, that\'s easy) the list of files in a directory and its sub directories.

I\'ve tried:

def folder = \"C:\\\\DevEnv\\\\Pr         


        
相关标签:
4条回答
  • 2020-12-23 03:23

    Newer versions of Groovy (1.7.2+) offer a JDK extension to more easily traverse over files in a directory, for example:

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

    See also [1] for more examples.

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

    0 讨论(0)
  • 2020-12-23 03:23

    The following works for me in Gradle / Groovy for build.gradle for an Android project, without having to import groovy.io.FileType (NOTE: Does not recurse subdirectories, but when I found this solution I no longer cared about recursion, so you may not either):

    FileCollection proGuardFileCollection = files { file('./proguard').listFiles() }
    proGuardFileCollection.each {
        println "Proguard file located and processed: " + it
    }
    
    0 讨论(0)
  • 2020-12-23 03:26

    This code works for me:

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

    Afterwards the list variable contains all files (java.io.File) of the given directory and its subdirectories:

    list.each {
      println it.path
    }
    
    0 讨论(0)
  • 2020-12-23 03:26

    This is what I came up with for a gradle build script:

    task doLast {
        ext.FindFile = { list, curPath ->
            def files = file(curPath).listFiles().sort()
    
            files.each {  File file ->
    
                if (file.isFile()) {
                    list << file
                }
                else {
                    list << file  // If you want the directories in the list
    
                    list = FindFile( list, file.path) 
                }
            }
            return list
        }
    
        def list = []
        def theFile = FindFile(list, "${project.projectDir}")
    
        list.each {
            println it.path
        }
    }
    
    0 讨论(0)
提交回复
热议问题