2016-10-24 4 views
-1

Zum Beispiel möchte ich eine Textdatei von Zeile Nummer 20056 bis Zeile 1159450 lesen und es in das Ausgabefenster ausgeben, aber ich weiß nicht, wie das geht, wie die Methode line.readline() mit der ersten Zeile beginnt.Wie lese ich von einer bestimmten Zeile bis zu einer bestimmten Zeile?

Dies ist mein Code:

String line; 
int currentLineNo = 1; 
int startLine = 20056;//40930; 
int endLine = 1159450; 

FileReader file = new FileReader("yourfilepath"); 
BufferedReader reader = new BufferedReader(file); 

PrintWriter writer = new PrintWriter("yourfilepath", "UTF-8"); 

while (currentLineNo < startLine) { 
    currentLineNo++; 
} 

while(currentLineNo >= startLine && currentLineNo <= endLine) { 
    // System.out.println(currentLineNo); 
    line = reader.readLine(); 

    System.out.println(line); 
    // writer.println(line); 
    currentLineNo++; 
} 

reader.close(); 
writer.close(); 

Wie drucke ich nur von der Linie 20.056 bis 1.159.450 Linie und gibt sie in den Ausgabefenster?

+0

In Ihrer ersten "while" -Schleife bringen Sie Ihren Leser nicht voran. Wenn Sie 'reader.readLine()' innerhalb der Schleife aufrufen, wird bei jeder Iteration eine Zeile verwendet. – khelwood

+0

Mögliches Duplikat von [Wie lese ich eine bestimmte Zeile mit der spezifischen Zeilennummer aus einer Datei in Java?] (Http://stackoverflow.com/questions/2312756/how-to-read-a-specific-line-using-) Die spezifische Zeile-Nummer-aus-einer-Datei-in-Java) – MordechayS

+1

Ähnliche Fragen hier: http://stackoverflow.com/questions/14217997/java-how-to-use-bufferedreader-to-read- specific-line –

Antwort

1
String line; 
int currentLineNo = 1; 
int startLine = 20056;//40930; 
int endLine = 1159450; 

FileReader file = new FileReader("yourfilepath"); 
BufferedReader reader = new BufferedReader(file); 

PrintWriter writer = new PrintWriter("yourfilepath", "UTF-8"); 

while (currentLineNo <= endLine) 
{ 
    line = reader.readLine(); 
    if(currentLineNo >= startLine && currentLineNo<=endLine) 
    { System.out.println(line); } 

    currentLineNo++; 
} 

reader.close(); 
writer.close(); 
+0

Es druckt immer noch die erste Zeile:/Ich brauche es nur von Zeile 20056 bis Zeile 1159450 –

+0

zu drucken versuchen Jays Code mit Ihrer ersten while-Schleife kommentiert aus. – spanglerb

+0

Es hat funktioniert! Ich muss nur die erste While-Schleife löschen, danke, sehr Jay! Einen schönen Tag noch: D –

0

(Posted Lösung im Namen des OP).

Ich muss nur die erste While-Schleife entfernen.

String line; 
    int currentLineNo = 1; 
    int startLine = 20056;//40930; 
    int endLine = 1159450; 

    FileReader file = new FileReader("yourfilepath"); 
    BufferedReader reader = new BufferedReader(file); 

    PrintWriter writer = new PrintWriter("yourfilepath", "UTF-8"); 

    while(currentLineNo<=endLine) 
    { 
     line = reader.readLine(); 
     if(currentLineNo >= startLine && currentLineNo<=endLine) 
     { System.out.println(line); } 

     currentLineNo++; 
    } 

    reader.close(); 
    writer.close(); 

Kredit an Jay Hamilton.

Verwandte Themen