首页 > 解决方案 > br.read() 如何在读取字符串结束时给出 -1 或 br.read() 究竟是如何工作的?

问题描述

这是一个示例程序作为缓冲阅读器的示例,我得到了大部分内容并理解了 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();    
    }    
} 

标签: javabufferedreaderreader

解决方案


-1是一个超出方法返回值正常范围的信号值。它用于表示已到达流结束:

返回:
读取的字符,为 0 到 65535 (0x00-0xffff) 范围内的整数,如果已到达流的末尾,则返回 -1

(来自BufferedReader.read():)

所以简而言之,正如 Federico klez Culloca 在评论中提到的那样,原因是因为它是这样read()设计的。


推荐阅读