Groovy: получить список всех файлов в каталоге (рекурсивный)

Вопрос:Вопрос с новичком: Я пытаюсь получить (не печатать, так просто) список файлов в каталоге и его подкаталогах. Я пробовал: def folder = "C:DevEnvProjectsGeneric"; def baseDir = new File(folder); files = baseDir.listFiles(); но я получаю только dirs. Я также пробовал def files = []; def processFileClosure = { println "working on ${it.canonicalPath}: " files.add (it.canonicalPath); }

Вопрос:

Вопрос с новичком:

Я пытаюсь получить (не печатать, так просто) список файлов в каталоге и его подкаталогах.
Я пробовал:

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

но я получаю только dirs. Я также пробовал

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 }

Затем переменная списка содержит все файлы (java.io.File) данного каталога и его подкаталоги:

list.each { println it.path } Ответ №1

В случае, если это помогает кому-либо еще, для меня в Gradle/Groovy работает для проекта build.gradle для Android, без необходимости импортировать groovy.io.FileType(ПРИМЕЧАНИЕ: не рекурсирует подкаталоги но когда я нашел это решение, я больше не заботился о рекурсии, так что вы тоже не можете):

FileCollection proGuardFileCollection = files { file(‘./proguard’).listFiles() } proGuardFileCollection.each { println «Proguard file located and processed: » + it } Ответ №2

Более новые версии 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

Оцените статью
Добавить комментарий