Groovy逐行读取文件,eachLine方法使用BufferedReader

Ana*_*man 2 groovy

我写了一个groovy脚本来逐行读取一个巨大的文件.

我目前正在使用如下的样板代码

File hugeFile = new File(filePath)
if (hugeFile.exists()) {
    hugeFile.eachLine {line ->
        //some process
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何判断"eachLine"是否使用BufferedReader来提高内存效率?

Wil*_*ill 6

试一试,看看它是否可以处理大文件.

并检查github上源代码:

public static <T> T eachLine(Reader self, int firstLine, @ClosureParams(value=FromString.class,options={"String","String,Integer"}) Closure<T> closure) throws IOException {
    BufferedReader br;
    int count = firstLine;
    T result = null;

    if (self instanceof BufferedReader)
        br = (BufferedReader) self;
    else
        br = new BufferedReader(self);
    ...
}
Run Code Online (Sandbox Code Playgroud)