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

时间:2016-06-13 20:17:48

标签: file-io groovy fileinputstream

似乎groovy有一个很好的闭包,它可以解决Java io的文件对象从数据文件中读取行(例如tab-delmited text)。

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"));

我仍然可以将eachLine与此BufferedReader一起使用吗?

1 个答案:

答案 0 :(得分:2)

我认为你没有费心去尝试?

但是

reader.eachLine { line ->
    println line
}

工作正常

或者你可以跳过所有这些,然后将charset传递给eachLine:

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