2010-04-23 1 views
6

Non riesco a far sì che eachLine salti la prima riga, in base a questo c'è un argomento intero che può essere passato a ogniLinea ma non riesco a capire la sintassiCome utilizzare l'argomento firstLine in ogni riga

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 
} 

risposta

14

Penso che tu sia equivoco quale parametro il 'firstLine' viene utilizzato per. Dalla documentazione:

FIRSTLINE - il valore numero linea utilizzata per la prima linea

In pratica ciò significa che questo numero sarà identificare quale la prima riga è. Passa sempre attraverso ogni riga nel file.

Così, per il seguente codice:

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

Sarebbe stampare:

4 line1

5 line2

6 line3

+0

ahh sì non l'ho capito grazie –

7

Per saltare la prima riga utilizzare restituire. Funziona come continua nei loop standard.

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

    println "$number: $line" 
} 
-1

Sono stato utilizzato readline x volte prima;

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

Come risponde la domanda? – jingx

+0

se vuoi saltare 4 linee, l'intricato 0..4 fa 4 cicli da saltare. –