关于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