如何使用 BufferedReader 中的 'eachLine' 闭包?

How to use the 'eachLine' closure from a BufferedReader?

似乎 groovy 有一个很好的闭包,可以关闭 Java io 的文件对象以从数据文件中读取行(例如制表符分隔的文本)..

def inputFile = new File('me/documents/100reasonsIloveJenniferLawerence.txt');
inputFile.eachLine { rawLine ->

def line = rawLine.split('\t')

但是假设文件是​​ 'UTF-16LE' 编码的,并且 File 构造函数不允许指定编码,所以我需要像这样使用 BufferedReader...

BufferedReader reader = new BufferedReader(
    new InputStreamReader(new FileInputStream('me/documents/100reasonsIloveJenniferLawerence.txt'), "UTF-16LE"));

我还能在这个 BufferedReader 上使用 eachLine 吗?

是的。

我猜你懒得去试试?

但是

reader.eachLine { line ->
    println line
}

会很好

或者您可以跳过所有这些,只需将字符集传递给 eachLine:

inputfile.eachLine('UTF-16LE') { line ->