Reputation: 36987
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
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
Reputation: 16833
What about this :
file('dir').eachFileRecurse(FileType.DIRECTORIES) { println it }
Gives :
dir/sub1/
dir/sub2/
dir/sub3/
Upvotes: 3