使用reader.eachLine读取BufferedInputStream时,如何保持行号计数?

ScA*_*er2 1 groovy

当使用eachLine读取BufferedInputStream时,如何跟踪我所在的行号?

def input = new GZIPInputStream(new FileInputStream(f))
def reader = new BufferedReader(new InputStreamReader(input))
reader.eachLine {
    line ->if(line.contains(searchString)){
        println "${f} - ${line}"
    }
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*ner 8

传递给eachLine的闭包也可以使用2个参数.首先是数据线,第二个是行号.

....
....
reader.eachLine { line, lineNumber ->
    if(line.contains(searchString)) {
        println "${lineNumber} - ${line}"
    }
}
Run Code Online (Sandbox Code Playgroud)

请参阅GDK Doc for InputStream eachLine方法.