Gradle-操作文件&文件拷贝

# 任务

  • 了解 Project 中操作文件的相关 API;
  • 代码演示-文件路径相关API;
  • 代码演示-file(path)相关API;
  • 代码演示-fileTree(path,closure)相关API;
  • 练习-文件拷贝;

# 操作文件相关 API

下面列举一下 Project 中关于操作文件相关的 API 。

方法名 作用
project.getBuildDir(); 获取module的build文件夹所在路径的File对象
File getRootDir(); 获取根module所在路径的的File对象
File getBuildFile(); 获取当前module对应的build.gradle文件对象
File file(Object path); 根据指定的path路径获取对应的文件对象
ConfigurableFileCollection files(Object... paths); 获取包含文件的ConfigurableFileCollection对象
ConfigurableFileTree fileTree(Object baseDir, Closure configureClosure); 将指定路径下所有的文件封装成一个文件数
... ...

# 代码演示

  • 文件路径相关API

下面的代码块,打印了相关的 api 的调用 和输出对应输出的值。

println project.rootDir// /Users/zeal/dev/as_code/GradleDemo
println project.getBuildFile()// /Users/zeal/dev/as_code/GradleDemo/build.gradle
println project.getBuildDir()// /Users/zeal/dev/as_code/GradleDemo/build
  • 通过 file(path) 得到 build.gradle 的内容
println file("app/build.gradle").getText()
  • 调用重载的 file(...) 可以操作多个文件
ConfigurableFileCollection configurableFileCollection = files("settings.gradle", "app/build.gradle")

//遍历每一个文件
configurableFileCollection.files.each {
    File file ->
        println file.text
}
  • 上面的实现方式也可以使用 fileTree(path,closure)将指定路径下所有的文件封装成一个文件数对象
fileTree("app/build/outputs/apk") { ConfigurableFileTree configurableFileTree ->
    //遍历
    configurableFileTree.visit { FileVisitDetails fileVisitDetails ->
        //在这里操作文件...
        println "the file's name is ${fileVisitDetails.name}"
    }
}

# 练习-文件拷贝

方法名 作用
WorkResult copy(Closure closure); 拷贝

在实际开发过程中,如果我们想要在APK打包完毕之后将APK文件拷贝到文件系统某一个位置中,就可以使用到这个copy方法来实现。

copy() {
    //闭包参数
    CopySpec copySpec ->
        //from 是一个方法,指定拷贝的源文件/文件夹>file("app/build/output/apk") 是方法的参数
        from file("app/build/outputs/apk")
        //into 是一个方法:指定拷贝的目的地>拷贝到根工程的output目录下
        into "${rootDir}/output"
        //重命名拷贝的文件名字
        rename {
            String srcFileName ->
                "${srcFileName}-haha.apk"
        }
        //移除不需要拷贝的内容 不拷贝 .json 结尾的文件
        exclude '**/*.json'       
}

记录于 2018-07-27 下午

你可能感兴趣的:(Gradle-操作文件&文件拷贝)