2013-10-10 2 views
-2

두 콘크리트 선 사이의 모든 선을 읽는 데 BufferedReader를 어떻게 사용할 수 있습니까? 예를 들어 나는이 코드Java에서 BufferedReader 사용

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

}  

나는 이런 식으로 뭔가를 쓰기를 사용할 수 있습니다, 줄 1 то의 2 호선에서 읽기 시작하고 싶어하지만, 그것은 작동하지 않습니다! 자바에서 초보자입니다.

+0

아이디어가 올바르게 보입니다. ide에 디버거를 사용하거나 무슨 일이 일어나고 있는지 보려면 line1이 무엇인지 출력하십시오. – 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

line1과 line2 사이의 모든 라인을 읽고 싶습니다. – user2842269

0

당신은 BufferReader의 markreset 방법을 사용하여 시도 할 수 있습니다 :

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 값으로 플레이 할 수도 있지만, 이런 일이 당신을 위해 일한다 수도 있습니다.

희망이 있습니다.