br.read()如何在读取字符串的末尾给出-1,或者br.read()如何工作?

svujldwt  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(333)

下面是一个示例程序,作为缓冲读取器的一个示例,我了解了其中的大部分内容,并且理解了while循环在 (br.read()=-1) 但我不明白为什么会这样?

import java.io.*;  
public class BufferedReaderExample {  
    public static void main(String args[])throws Exception{    
          FileReader fr=new FileReader("D:\\testout.txt");    
          BufferedReader br=new BufferedReader(fr);    

          int i;    
          while((i=br.read())!=-1)    //<<<<I'm talking about this here
          {  
          System.out.print((char)i);  
          }  
          br.close();    
          fr.close();    
    }    
}
ncgqoxb0

ncgqoxb01#

这个 -1 是超出方法返回值正常范围的信号值。它用于发出信号,表示已到达流的末端:
返回:
读取的字符,范围为0到65535(0x00-0xffff)之间的整数,如果已到达流的末尾,则为-1
(来自: BufferedReader.read() )
简言之,正如federico klez culloca在评论中提到的,原因是因为 read() 是设计的。

相关问题