W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
文件集合表示一組文件,Gradle 使用 FileCollection 接口表示文件集合, Gradle API 中的許多項(xiàng)目都實(shí)現(xiàn)了這個(gè)接口,例如 dependency configurations .
獲取 FileCollection 實(shí)例的一種方法是使用 Project.files() 方法.你可以傳遞任何數(shù)量的對(duì)象參數(shù),這個(gè)方法能將你傳遞的對(duì)象集合轉(zhuǎn)換為一組文件對(duì)象.files() 方法接收任何類型對(duì)象參數(shù).每一個(gè) file()方法都依賴于項(xiàng)目目錄(在第 15 章,第一小節(jié)中介紹).files()方法也接收 collections, iterables,maps 和 arrays 類型參數(shù).這些參數(shù)的內(nèi)容會(huì)被解析,然后被轉(zhuǎn)換為文件對(duì)象.
例 15.2 創(chuàng)建文件集合
build.gradle
FileCollection collection = files('src/file1.txt',
new File('src/file2.txt'),
['src/file3.txt', 'src/file4.txt'])
文件集合可以被迭代器,使用迭代操作能夠?qū)⑵滢D(zhuǎn)換為其他的一些類型.你可以使用 + 操作將兩個(gè)文件集合合并,使用 - 操作能夠?qū)σ粋€(gè)文件集合做減法.下面一些例子介紹如何操作文件集合.
例 15.3 使用文件集合
build.gradle
// 對(duì)文件集合進(jìn)行迭代
collection.each {File file ->
println file.name
}
// 轉(zhuǎn)換文件集合為其他類型
Set set = collection.files
Set set2 = collection as Set
List list = collection as List
String path = collection.asPath
File file = collection.singleFile
File file2 = collection as File
// 增加和減少文件集合
def union = collection + files('src/file3.txt')
def different = collection - files('src/file3.txt')
你也可以向 files() 方法專遞一個(gè)閉合或者可回調(diào)的實(shí)例參數(shù).當(dāng)查詢集合的內(nèi)容時(shí)就會(huì)調(diào)用它,然后將返回值轉(zhuǎn)換為一些文件實(shí)例.返回值可以是 files() 方法支持的任何類型的對(duì)象.下面有個(gè)簡(jiǎn)單的例子來演示實(shí)現(xiàn) FileCollection 接口
例 15.4 實(shí)現(xiàn)一個(gè)文件集合
build.gradle
task list << {
File srcDir
// 使用閉合創(chuàng)建一個(gè)文件集合
collection = files { srcDir.listFiles() }
srcDir = file('src')
println "Contents of $srcDir.name"
collection.collect { relativePath(it) }.sort().each { println it }
srcDir = file('src2')
println "Contents of $srcDir.name"
collection.collect { relativePath(it) }.sort().each { println it }
}
使用 gradle -q list 輸出結(jié)果
> gradle -q list
Contents of src
src/dir1
src/file1.txt
Contents of src2
src2/dir1
src2/dir2
另外, files() 方法也接收其他類型的參數(shù):
FileCollection
內(nèi)容損壞的文件包含在文件集合中.
Task
任務(wù)的輸出文件包含在文件集合中.
TaskOutputs
TaskOutputs 的輸出文件包含在文件集合中
值得注意的是當(dāng)有需要時(shí)文件集合的內(nèi)容會(huì)被被惰性處理,就比如一些任務(wù)在需要的時(shí)候會(huì)創(chuàng)建一個(gè)FileCollecion 代表的文件集合.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: