Appearance
文件树
文件树(FileTree)是文件集合的一种特殊形式,保留目录层级结构,支持 Ant 风格的模式匹配。
基本用法
kotlin
// 基于目录的文件树
val tree = fileTree("src/main/java")
// 带过滤
val javaFiles = fileTree("src") {
include("**/*.java")
include("**/*.kt")
exclude("**/generated/**")
exclude("**/*Test.java")
}
// 获取文件数量
println("Java 文件数:${javaFiles.files.size}")Ant 模式匹配
| 模式 | 匹配说明 |
|---|---|
**/*.java | 任意目录下的 .java 文件 |
com/**/*.java | com 目录下所有 .java 文件 |
*Test.java | 当前目录下以 Test 结尾的 .java |
src/*/java | src 下一级子目录中的 java 目录 |
从 ZIP/JAR 创建文件树
kotlin
// 解压 ZIP 到文件树
val zipTree = zipTree("libs/custom.zip")
val jarTree = zipTree("libs/custom.jar")
// 过滤 ZIP 内容
val classFiles = zipTree("libs/custom.jar").matching {
include("com/example/**/*.class")
}
// 复制 JAR 内容
tasks.register<Copy>("extractJar") {
from(zipTree("libs/my-jar.jar")) {
include("**/*.xml")
}
into("$buildDir/extracted")
}合并文件树
kotlin
val combined = fileTree("src/main") + fileTree("src/generated")
// 过滤合并后的树
val filtered = combined.matching {
include("**/*.java")
}