2013-10-10 81 views
-2

如何使用BufferedReader讀取兩條具體行之間的所有行。例如,我要開始LINE-то2號線讀書,我可以使用此代碼在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(); 

}  

我寫這樣的事情,但它不工作!請幫助我,我是Java初學者!

+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價值的發揮,但這樣的事情可能會爲你工作。

希望有所幫助。

相關問題