请参见下面的两个代码,让我知道为什么它像Java语言那样打印
BufferedReader br = new BufferedReader(new FileReader("file path"));
while(br.readLine()!= null) {
System.out.println(br.readLine());
}
br.close();
此代码不能打印完整的文件内容,但是,如果我使用下面的代码,它将打印文件的完整内容。请解释
BufferedReader br = new BufferedReader(new FileReader("filepath"));
String str;
while((str=br.readLine())!= null) {
System.out.println(str);
}
br.close();
答案 0 :(得分:7)
简单:通过在BufferedReader
循环中两次调用br.readLine()
,可以从while
读取两次行。首先在条件部分(while (br.readLine()!=null)
)中读取一行,然后再次打印(...println(br.readLine())
)。
已读取的行从缓冲区中消失。
在第二个代码部分,该行存储在条件部分的str
中。后来str
也用于打印行。
答案 1 :(得分:2)
您在第一条代码中先在while条件中使用br.readLine()
,然后在System.out.println(br.readLine())
中进行第二次读取行,这就是为什么它总是打印2,4,6,8...
行,而在第二条代码中您读取一次及其原因存储在str
变量中并打印str
,这就是为什么要打印整个文件的原因。