Gradle之File操作

File相關(guān)操作代碼:
//Project.file() 方法能夠相對項目目錄定位一個文件
task filePosition {
    File configFile = file('mountains.xml')
    configFile = file(configFile.absolutePath)
    println(configFile.absolutePath)
    configFile = file(new File('src/build/config.xml'))
    configFile.mkdirs()
    println(configFile.absolutePath)
}

//根據(jù)一個 XML ,在build/generated下生成多個輸出文件
task transform {
    def srcFile = file('mountains.xml')
    def destDir = new File(buildDir, 'generated')
    doLast {
        println "transforming source file."
        destDir.mkdirs()
        def mountains = new XmlParser().parse(srcFile) //解析mountains.xml文件得到節(jié)點
        mountains.children().each {
            def name = it.name()
            def destFile = new File(destDir, "${name}.txt")
            destFile.text = "$name"
        }
    }
}


//讀寫gradle.properties文件屬性
task propertiesWrite {
    def defaultProps = new Properties()
    def propertiFile = new File(rootDir, "gradle.properties") //根目錄下gradle.properties文件
    def inputStream = propertiFile.newDataInputStream()
    defaultProps.load(inputStream)  //Properties讀取文件流

    defaultProps.setProperty("version", "1.1.0") //properti設(shè)置新屬性
    def version = defaultProps.getProperty("version")  //properti讀取新屬性

    println("當(dāng)前配置 version: " + version)
}
//打印  當(dāng)前配置 version: 1.1.0

//創(chuàng)建文件集合,使用 FileCollection 接口表示文件集合
task collections {
    FileCollection collection = files('src/file1.txt', new File('src/file2.txt'), 'src/file3.txt')
    collection.each {
        println(it.absolutePath)
    }
    def files = collection.files //文件集合轉(zhuǎn)set
    def list = collection as List //文件集合轉(zhuǎn)list
    def union = collection + file('src/file4.txt')
    def different = collection - file('src/file3.txt')
}

//使用標(biāo)準(zhǔn)輸出寫入log信息
task loggerTask {
    logger.error("error message")
    logger.info("info message")
    logger.warn("warn message")
    logger.debug("debug message")
    logger.quiet("An info log message which is always logged.")
    logger.lifecycle("A lifecycle info log message.")
}

//文件樹形操作
task fileTree {
    FileTree tree = fileTree('src/main/res')

    //遍歷訪問文件樹的元素
    tree.visit { element->
        println "$element.file"
    }
}

//復(fù)制文件,任務(wù)類型為Copy,Copy類的父類定義好了from 和 into函數(shù)
task copyTask(type: Copy) {
    //因為在copy類型的task下,所以能直接用該task下的函數(shù)
    //包括函數(shù) from to rename fileter等
    from('src/main/java')  //添加要復(fù)制的文件
    from('mountains.xml') //繼續(xù)添加要復(fù)制的文件
    from file('src/main/res') //繼續(xù)添加要復(fù)制的文件

    into('src/copyPath') //into表示要拷貝到的文件路徑

//    rename { fileName ->  //文件重命名
//        fileName.relace('','')
//    }
}

參考:
https://juejin.cn/post/6844903838290296846#comment
https://doc.yonyoucloud.com/doc/wiki/project/GradleUserGuide-Wiki/index.html
demo參考:
https://github.com/running-libo/GradleStudy

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容