Saya mencoba untuk mendapatkan (bukan mencetak, itu mudah) daftar file di direktori dan sub direktorinya.
Saya sudah mencoba:
def folder = "C:\\DevEnv\\Projects\\Generic";
def baseDir = new File(folder);
files = baseDir.listFiles();
Saya hanya mendapatkan direktori. Saya juga sudah mencoba:
def files = [];
def processFileClosure = {
println "working on ${it.canonicalPath}: "
files.add (it.canonicalPath);
}
baseDir.eachFileRecurse(FileType.FILES, processFileClosure);
Tapi "file" tidak dikenali dalam lingkup penutupan.
Bagaimana cara mendapatkan daftarnya?
file
groovy
directory-listing
Yossale
sumber
sumber
/tmp/directory1
Cara mendapatkandirectory1
output sendiri.
/./path
Versi yang lebih baru dari Groovy (1.7.2+) menawarkan ekstensi JDK agar lebih mudah menelusuri file dalam direktori, misalnya:
import static groovy.io.FileType.FILES def dir = new File("."); def files = []; dir.traverse(type: FILES, maxDepth: 0) { files.add(it) };
Lihat juga [1] untuk contoh lainnya.
[1] http://mrhaki.blogspot.nl/2010/04/groovy-goodness-traversing-directory.html
sumber
Yang berikut ini berfungsi untuk saya di Gradle / Groovy untuk
build.gradle
proyek Android, tanpa harus mengimporgroovy.io.FileType
(CATATAN: Subdirektori tidak berulang, tetapi ketika saya menemukan solusi ini, saya tidak lagi peduli tentang rekursi, jadi Anda juga tidak boleh):FileCollection proGuardFileCollection = files { file('./proguard').listFiles() } proGuardFileCollection.each { println "Proguard file located and processed: " + it }
sumber
fileTree
berulang.FileTree
tidak termasuk direktori (tidak memperlakukannya sebagai file).Inilah yang saya temukan untuk skrip build gradle:
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 } }
sumber