如何在每一行中使用第一个Line参数

时间:2010-04-23 15:35:13

标签: groovy

我似乎无法让eachLine跳过第一行,根据这个,有一个整数参数可以传递给eachLine但我无法弄清楚语法

http://docs.groovy-lang.org/latest/html/groovy-jdk/java/io/File.html#eachLine(int, groovy.lang.Closure)

#doesn't work
new FileReader('myfile.txt').eachLine firstLine=2,{
       line-> println line
}
#nope
new FileReader('myfile.txt').eachLine(2){
       line-> println line
}

4 个答案:

答案 0 :(得分:16)

我认为你误解了'firstLine'参数的用途。来自文档:

  

firstLine - 用于第一行的行号值

基本上这意味着这个数字将标识第一行是什么。它总是遍历文件中的每一行。

所以对于以下代码:

new FileReader('c:/users/chris/desktop/file.txt').eachLine(4){line, number-> 
    println "$number $line"
}

会打印出来:

  

4 line1

     

5 line2

     

6 line3

答案 1 :(得分:7)

要跳过第一行,请使用返回。它的工作方式就像在标准循环中继续一样。

new FileReader('myfile.txt').eachLine { line, number ->
    if (number == 1)
        return // continue

    println "$number: $line"
}

答案 2 :(得分:0)

要扩展@Michal的答案,对于一般情况(而不是一行),您可以执行以下操作:

linesToSkip = 100
someFile.eachLine { line, lineNumber ->
    if (lineNumber < linesToSkip) { return }  // Skip previously read lines
    println "${line}"
}

答案 3 :(得分:-1)

我之前使用过readline x次;

def arq = new FileReader('c:/users/chris/desktop/file.txt')
(0..4).each{
     arq.readLine();
}
arq.eachLine{line, number-> 
    println "$number $line"
}