關於BufferedReader如何工作的非常基本的問題。鑑於字符串/短語,我想從文件中找到並打印大量文本。瞭解BufferedReader如何在Java中工作
using BufferedReader in Java我做了一些關於這個話題的研究,那是最接近的結果。雖然沒有完全解決我的問題。
因此,有了這些信息,爲什麼下面的代碼終止?
public class MainApp {
String line = null;
String phrase = "eye";
try {
File file = new File("text.txt");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
while((line = br.readLine()) != null) {
if (line.equals(phrase) {
System.out.println(line);
}
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
我的這一塊應該如何工作的理解:
- while循環經過文本的每一行,直到條件不再爲真
- 每一行存儲在BufferedReader
- Loop正在工作,直到的條件if(line.equals(phrase) if
- 打印發現的短語。
爲什麼我認爲它可能不工作:
readlines方法不作爲字符串存儲在的BufferedReader(因此他們不能相比)
錯誤的邏輯(很可能是if語句)
爲了簡單起見,我們假設「的text.txt」充滿了很長的絕殺存有與單一「眼睛」字在它的中間放的地方。
問題到底在哪裏? (不提供整個代碼解決方案如果可能的話,我很樂意爲實踐的目的做編碼部分我自己)
是什麼讓你認爲讀取行不是'字符串'? – 2015-03-08 17:37:26
「readlines不作爲字符串存儲在BufferedReader中」。你究竟是什麼意思?你的意思是整行存儲在字符串中,而不是單詞,這就是爲什麼你不能比較這一行和短語? – CKing 2015-03-08 17:39:17
由於「equals()」字符串方法在我的條件語句中起作用,我假設BufferedReader將讀取的行臨時存儲爲其他內容,然後將其轉換爲字符串。我對此的理解完全失效。我也忘了我將結果存儲在一個字符串變量本身。 – Lotix 2015-03-08 18:29:44