2016-10-24 3 views
-1

Например, я хочу прочитать текстовый файл с номера строки 20056 до строки 1159450 и выводит его в окно вывода, но я не знаю, как это сделать, поскольку метод line.readline() начинается с первой строки.Как я могу прочитать определенную строку до определенной строки?

Это мой код:

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(); 

Как не я печатать только из строки 20056 до линии 1159450 и выводит его в окно вывода?

+0

В вашем первом цикле 'while' вы не продвигаете свой« читатель ». Если вы вызовете 'reader.readLine()' внутри цикла, он будет использовать линию каждую итерацию. – khelwood

+0

Возможный дубликат [Как прочитать определенную строку с использованием определенного номера строки из файла в Java?] (Http://stackoverflow.com/questions/2312756/how-to-read-a-specific-line-using- – MordechayS

+1

Аналогичный вопрос здесь: http://stackoverflow.com/questions/14217997/java-how-to-use-bufferedreader-to-read- specific-line –

ответ

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

Он по-прежнему печатает первую строку:/Мне нужно, чтобы она печаталась только с строки 20056 до строки 1159450. –

+0

попробовал код jays с вашим первым while while commented вне. – spanglerb

+0

Это сработало! Мне просто нужно удалить первый цикл, спасибо большое! Хороший день: D –

0

(Отправлено решение от имени ОП).

Мне просто нужно удалить первый цикл while.

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(); 

Кредит Джей Гамильтон.

Смежные вопросы