例子:

三种方式,使用

task file{// relative pathFile configFile = file('build.gradle')println 'relative path: ' + configFile// Using an absolute pathconfigFile = file(configFile.absolutePath)println 'absolute path: ' + configFile.absolutePath + ' = ' + configFile// Using a File object with a relative pathconfigFile = file(new File('build.gradle'))  println 'file object: ' + configFile
}

输出:

relative path: C:\temp\quickstart\groovy\build.gradle
absolute path: C:\temp\quickstart\groovy\build.gradle = C:\temp\quickstart\groovy\build.gradle
file object: C:\temp\quickstart\groovy\build.gradle

文件集合的创建方式和使用

FileCollection collection = files('build.gradle', new File('other.gradle'), ['settings.gradle', '.gradle/6.0/gc.properties'])  println "collection: " + collectioncollection.each {File file ->println 'file name:' + file.name}

输出:

这个元素为File的文件集合可以转换成其他的Groovy数据结构:

// Convert the collection to various types
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')

文件集合的自定义实现方式

task file {File srcDir// Create a file collection using a closureFileCollection collection = files { srcDir.listFiles() }srcDir = file('src')println "Contents of $srcDir.name"collection.collect { relativePath(it) }.sort().each { println it }srcDir = file('.gradle')println "Contents of $srcDir.name"collection.collect { relativePath(it) }.sort().each { println it }
}

输出:

Contents of src
src\main
src\test
Contents of .gradle
.gradle\6.0
.gradle\buildOutputCleanup

文件树

文件树是按层次结构排序的文件集合。例如,文件树可能表示一个目录树或 ZIP 文件的内容。它通过 FileTree 接口表示。FileTree 接口继承自 FileCollection,所以你可以用对待文件集合一样的方式来对待文件树。Gradle 中的几个对象都实现了 FileTree 接口,例如 source sets。

测试:

task file {FileTree tree = fileTree(dir: 'src/main')tree.each {File file -> println file.name}FileTree tree2 = fileTree(dir: '.gradle')List list = tree2 as Listlist.each({println it})
}

输出:

Person.java
resource.xml
C:\temp\quickstart\groovy.gradle\6.0\executionHistory\executionHistory.bin
C:\temp\quickstart\groovy.gradle\6.0\executionHistory\executionHistory.lock
C:\temp\quickstart\groovy.gradle\6.0\fileChanges\last-build.bin
C:\temp\quickstart\groovy.gradle\6.0\fileHashes\fileHashes.bin
C:\temp\quickstart\groovy.gradle\6.0\fileHashes\fileHashes.lock
C:\temp\quickstart\groovy.gradle\6.0\gc.properties
C:\temp\quickstart\groovy.gradle\buildOutputCleanup\buildOutputCleanup.lock
C:\temp\quickstart\groovy.gradle\buildOutputCleanup\cache.properties
C:\temp\quickstart\groovy.gradle\buildOutputCleanup\outputFiles.bin

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

Gradle 任务访问文件的几种方式相关推荐

  1. COS中访问文件的三种方式

    1.通过FID来访问文件(比如EF,DF) 2.通过SFI来访问文件(有些COS命令可以通过SFI来快速访问文件,而不需要事先选中文件) 3.通过文件名来访问文件(只能是DF文件) 转载于:https ...

  2. php访问url的四种方式

    php访问url的四种方式 1.fopen方式 //访问指定URL函数 [php] view plain copy print? function access_url($url) { if ($ur ...

  3. 用Python读取CSV文件的5种方式

    典型的数据集stocks.csv: 一个股票的数据集,其实就是常见的表格数据.有股票代码,价格,日期,时间,价格变动和成交量.这个数据集其实就是一个表格数据,有自己的头部和身体. 第一招:简单的读取 ...

  4. python 下载文件-Python下载文件的11种方式

    原标题:Python下载文件的11种方式 在本教程中,你将学习如何使用不同的Python模块从web下载文件.此外,你将下载常规文件.web页面.Amazon S3和其他资源. 最后,你将学习如何克服 ...

  5. 关于虚拟机中对象访问定位的两种方式的一些思考

    前言 本文是在周志明老师经典作品<深入理解Java虚拟机>第二章第三节的基础上对句柄和直接指针两种对象访问方式的深入思考,有不准确的地方希望读者不吝赐教. JVM中访问对象的两种方式 1. ...

  6. python爬虫有多少种方式_python爬虫-----Python访问http的几种方式

    爬取页面数据,我们需要访问页面,发送http请求,以下内容就是Python发送请求的几种简单方式: 会使用到的库  urllib   requests 1.urlopen import urllib. ...

  7. 前端下载文件的几种方式

    前端下载文件的几种方式 前言 1. window.open 2. window.location.href 3. a标签 4. iframe 5. blob 前言 总结下载文件的几种方式,文件都是通过 ...

  8. 查看binlog文件的2种方式

    2019独角兽企业重金招聘Python工程师标准>>> 查看binlog文件的2种方式 1.使用show binlog events a.获取binlog文件列表 mysql> ...

  9. JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式

    JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式,以及如何使用Eclips Memory Analyzer(MAT)插件进行堆内存分析. 方法一: jmap -du ...

最新文章

  1. JS页面加载完成触发事件
  2. ffmpeg拿AVPacket做缓冲队列时注意
  3. 【Linux】一步一步学Linux——iptables-restore命令(188)
  4. ping 命令的几种使用方法?
  5. 6加载光盘 virtualbox vm_6个轻量级Linux发行版(2019年)
  6. 李新海:沉默是口才运用的最高境界
  7. Qt浅谈之三十二二维码条形码解析
  8. 一图看清美国最具前景的50家人工智能公司
  9. 从零开始写一个武侠冒险游戏-4-第一次整合
  10. 在自己的服务器上快速部署RSSHub
  11. webpack5css抽离和压缩
  12. PHP WebSehll 后门脚本与检测工具
  13. linux蜂鸣器驱动指令,Linux 设备驱动简析—PC蜂鸣器驱动
  14. 微信小程序开发数据缓存基础知识辨析以及运用实例
  15. 是否对纯色背景的IDE感到乏味?那就让vscode背景变成你想要的样子
  16. 激战2电信服务器哪个最多,《激战2》电信一区服务器玩家实力排行榜
  17. p51 thinkpad 拆解_ThinkPad P51硬盘更换指南(图解)
  18. OSChina 周三乱弹 ——grath最近睡了一主播
  19. 10.25 ib api 自定义魔改日记
  20. hive mysql 权限,hive权限问题,

热门文章

  1. Hibernate HQL基础 调用数据库存储过程
  2. 关于asp.net中partial,asp.net编译笔记
  3. ethereum(以太坊)(七)--枚举/映射/构造函数/修改器
  4. IntelliJ IDEA 运行 Maven 项目
  5. SQL性能优化-查询条件与字段分开执行,union代替in与or,存储过程代替union
  6. 【连载】第一章:亚洲-台湾(1)
  7. backtracking算法
  8. IOC AOP 设计模式
  9. ThinkPHP3.1快速入门(3)查询语言
  10. 如何使用安装光盘为本机创建yum repository