2010-04-23 1 views
6

Tôi không thể làm cho eachLine bỏ qua dòng đầu tiên, theo điều này có một đối số nguyên có thể được chuyển đến eachLine nhưng tôi không thể tìm ra cú phápLàm cách nào để sử dụng đối số firstLine trong mỗi dòng

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 
} 

Trả lời

14

tôi nghĩ rằng bạn đang hiểu nhầm những gì tham số của firstLine 'được sử dụng cho. Từ các tài liệu:

firstLine - giá trị số dòng sử dụng cho dòng đầu tiên

Về cơ bản điều này có nghĩa rằng con số này sẽ xác định những gì dòng đầu tiên là. Nó luôn luôn đi qua mỗi dòng trong tập tin.

Vì vậy, cho đoạn mã sau:

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

Nó sẽ in ra:

4 line1

5 dòng2

6 Line3

+0

ahh vâng tôi không hiểu rằng cảm ơn –

7

Để bỏ qua dòng đầu tiên, hãy sử dụng trả lại. Nó hoạt động như tiếp tục trong vòng lặp tiêu chuẩn.

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

    println "$number: $line" 
} 
-1

tôi đã được sử dụng readline x lần trước;

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

Cách này trả lời câu hỏi? – jingx

+0

nếu bạn muốn bỏ qua 4 dòng khoảng 0..4 làm 4 vòng để bỏ qua. –