friederbluemle
friederbluemle

Reputation: 36987

Gradle FileTree directories only

Given a directory dir:

dir
├── sub1
│   ├── file1
│   └── file2
├── sub2
│   ├── file1
│   └── file2
└── sub3
    ├── file1
    └── file2

fileTree('dir').each { println it } gives me this:

dir/sub1/file1
dir/sub1/file2
dir/sub2/file1
dir/sub2/file2
dir/sub3/file1
dir/sub3/file2

Instead of all the file, I just want all the directories and subdirectories:

dir/
dir/sub1/
dir/sub2/
dir/sub3/

How do I do that? I've looked at DirectoryTree, but it does not extend FileCollection (unlike FileTree), so it's not very useful.

Upvotes: 5

Views: 10496

Answers (2)

lance-java
lance-java

Reputation: 27976

FileTree.getFiles() returns only the files in the tree, not the directories.

I needed to do the following to get the directories

List<File> dirs = []
fileTree(dir).visit { FileVisitDetails fvd ->
   if (fvd.directory) {
      dirs << fvd.file
   }
}
doStuff(dirs)

Upvotes: 2

ToYonos
ToYonos

Reputation: 16833

What about this :

file('dir').eachFileRecurse(FileType.DIRECTORIES) { println it }

Gives :

dir/sub1/
dir/sub2/
dir/sub3/

Upvotes: 3

Related Questions