下面两个不同的代码为我提供了Java中的两个不同的输出

时间:2019-05-17 11:11:52

标签: java readline

请参见下面的两个代码,让我知道为什么它像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();

2 个答案:

答案 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,这就是为什么要打印整个文件的原因。