2013-10-10 4 views
-2

Как использовать BufferedReader для чтения всех строк между двумя бетонными линиями. Например, я хочу, чтобы начать чтение из линии 1 то line2, могу ли я использовать этот кодс использованием BufferedReader в Java

BufferedReader reader = new BufferedReader(new FileReader("file.txt")); 
String line1 = "StartLine"; 
String line2 = "EndLine"; 
while (!line1.equals(line2)) 
{ 
    // do something 
    line1 = reader.readLine(); 

}  

Я что-то вроде этого писать, но он не работает! Пожалуйста, помогите мне, я новичок в Java!

+0

Идея выглядит правильно. Используйте отладчик для своего идеала или выводите, какая строка1 должна видеть, что происходит. – BevynQ

ответ

0

Для начала вам понадобится еще один цикл, чтобы прочитать все строки перед вашей «StartLine»
, и тогда вам нужно будет уточнить, что НЕ работает.
Что вы ожидаете и чего не происходит

2

Измените цикл следующим образом. Вам нужно прочитать строку в состоянии и проверить, не является ли она нулевым, то есть конец файла.

String line1 = "StartLine"; 
String line2 = "EndLine"; 
String line3 = null; 

//Iterate upto line1 
while((line3 = reader.readLine()) != null && ! line3.equals(line1)); 

//Print the lines till line2 
while(line3 != null && ! line3.equals(line2)) { 
    System.out.println(line3); 
    line3 = reader.readLine(); 
} 
+0

Я пробую это, но этот метод печатает все строки из файла и! не могу понять почему? – user2842269

+0

Что вы хотите делать? –

+0

Я хочу прочитать все строки между строками1 и line2 – user2842269

0

Вы можете попробовать использовать BufferReader в mark и reset методы:

BufferedReader reader = new BufferedReader(new FileReader("file.txt")); 
    String line1 = "StartLine"; 
    String line2 = "EndLine"; 
    String line; 
    while ((line = reader.readLine()) != null) { 
     if (line1.equals(line)) { 
      System.out.println(line); 
      reader.mark(100); 
     } 
    } 
    reader.reset(); 
    while ((line = reader.readLine()) != null) { 
     if (line2.equals(line)) { 
      break; 
     } else { 
      System.out.println(line); //or whatever you want to do 
     } 
    } 

}

Вы, возможно, придется играть со значением mark, но что-то подобное может работать для вас.

Надеюсь, что это поможет.

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