2010-04-23 15 views
6

Nie mogę sprawić, że każda linia pominie pierwszą linię, zgodnie z tym istnieje argument liczby całkowitej, który można przekazać do każdej linii, ale nie mogę znaleźć składniJak używać argumentu firstLine w każdej linii

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 
} 

Odpowiedz

14

Myślę, że nieporozumienie co parametrem 'Firstline' stosuje. Od docs:

Firstline - wartość numer linii wykorzystywane do pierwszej linii

Zasadniczo oznacza to, że liczba ta będzie określić, co pierwsza linia jest. Zawsze przechodzi przez każdą linię w pliku.

Więc dla następującego kodu:

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

Byłoby wydrukować:

4 line1

5 line2

6 line3

+0

ahh tak, nie zrozumiałem tego dzięki –

7

Aby pominąć pierwszą linię, użyj return. Działa jak kontynuacja w standardowych pętlach.

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

    println "$number: $line" 
} 
-1

Byłem używany readline x razy wcześniej;

+0

Jak ta odpowiedź na pytanie? – jingx

+0

, jeśli chcesz pominąć 4 linie, aby przeskakiwać od 0 do 4 do 4. –

Powiązane problemy