Groovy学习-IO/文件操作

读取文件

// 读取文本文件并打印每一行文本
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 '继续遍历'
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西瓜不甜柠檬不酸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值