Skip to content

文件树

文件树(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/**/*.javacom 目录下所有 .java 文件
*Test.java当前目录下以 Test 结尾的 .java
src/*/javasrc 下一级子目录中的 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")
}

下一步