仅限Gradle FileTree目录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了仅限Gradle FileTree目录相关的知识,希望对你有一定的参考价值。

给定一个目录dir

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

fileTree('dir').each { println it }给了我这个:

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

而不是所有的文件,我只想要所有的目录和子目录:

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

我怎么做?我看过DirectoryTree,但它没有扩展FileCollection(不像FileTree),所以它不是很有用。

答案

那这个呢 :

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

给:

dir/sub1/
dir/sub2/
dir/sub3/
另一答案

你也可以这样做

FileTree dirs = fileTree('dir').matching {
    include { FileTreeElement el -> el.directory }
}
doStuff(dirs)

https://docs.gradle.org/current/javadoc/org/gradle/api/file/FileTree.html#matching-groovy.lang.Closure- https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/util/PatternFilterable.html#include-groovy.lang.Closure- https://docs.gradle.org/current/javadoc/org/gradle/api/file/FileTreeElement.html#isDirectory--

以上是关于仅限Gradle FileTree目录的主要内容,如果未能解决你的问题,请参考以下文章

从 Gradle 中的 FileTree 中排除文件

Gradle - 如何仅针对特定类型的文件在 fileTree 中迭代

如何使用 Gradle 获取文件和目录名称?

gradle 删除指定目录中的文件和目录

jQuery FileTree 2.1.x-默认打开的文件夹

片段内部静态类和gradle问题