我似乎无法让eachLine跳过第一行,根据这个,有一个整数参数可以传递给eachLine但我无法弄清楚语法
#doesn't work
new FileReader('myfile.txt').eachLine firstLine=2,{
line-> println line
}
#nope
new FileReader('myfile.txt').eachLine(2){
line-> println line
}
答案 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"
}