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

pra*_*ndo -1 java readline

参见下面的两个代码,让我知道为什么它像Java语言那样打印

BufferedReader br = new BufferedReader(new FileReader("file path"));
while(br.readLine()!= null) {
    System.out.println(br.readLine());
}
br.close();
Run Code Online (Sandbox Code Playgroud)

此代码不能打印完整的文件内容,但是,如果我使用下面的代码,它将打印文件的完整内容..请解释

BufferedReader br = new BufferedReader(new FileReader("filepath"));
String str;
while((str=br.readLine())!= null) {
    System.out.println(str);
}
br.close();
Run Code Online (Sandbox Code Playgroud)

Sir*_*Lot 6

简单:BufferedReader通过br.readLine()while循环中调用两次,您可以从读取两次行。首先,在条件部分(while (br.readLine()!=null))中读取一行,然后再次进行打印(...println(br.readLine()))。

读取的行从缓冲区中消失了。

在第二个代码部分中,该行存储到str条件部分中。那str以后也用来打印行。

  • “您读了每一行两次”恰恰是该代码没有做的事情。相反,当它_应该_再次读取同一行时,它读取_next_行(根据OP的期望)。 (3认同)