读取文件
// 读取文本文件并打印每一行文本
new File('./', 'a.txt').eachLine{ line ->
println line
}
// eachLine方法是Groovy为File类自动添加的方法,同时提供多个变体方法,比如你想知道读取的行数,你可以使用它的变体方法,如下
new File('./', 'a.txt').eachLine{ line, nb ->
println "Line $nb: $line"
}
// 如果你需要收集文本文件的每一行到一个列表中,你可以这样做:
def list = new File('./', 'a.txt').collect {it}
// 用as操作符来讲文件内容转为String数组
def array = new File('./', 'a.txt') as String[]
写入文件
// 向文件中写入数据,会删除掉原来文件中的数据
// 方式一
new File('./','a.txt').withWriter('utf-8') { writer ->
writer.writeLine 'Into the ancient pond'
writer.writeLine 'A frog jumps'
writer.writeLine 'Water’s sound!'
}
// 方式二
new File('./','a.txt') << '''Into the ancient pond
A frog jumps
Water’s sound!'''
文件树遍历
//在目录的每一个文件直行闭包代码
def dir = new File('./')
dir.eachFile { file ->
println file.name
}
//在目录中符合匹配模式的文件直行闭包代码
dir.eachFileMatch(~/.*\.txt/) { file ->
println file.name
}
//在指定目录递归查找,并在每一个文件和目录直行闭包代码
dir.eachFileRecurse { file ->
println file.name
}
//在指定目录递归查找,并在每一个文件直行闭包代码
dir.eachFileRecurse() { file ->
println file.name
}
// 对于更复杂的遍历技术可以使用traverse方法,你需要设置一个特殊的标志指示这个遍历要做什么
dir.traverse { file ->
if (file.directory && file.name=='bin') {
//如果当前file是一个目录或者它的名字是 bin ,则停止遍历
println '停止遍历'
} else {
//打印文件名并继续遍历
println file.name
println '继续遍历'
}
}