从类Reader读取(char [] cbuf,int off,int len)

时间:2013-10-01 05:28:58

标签: java

据我所知,这个抽象方法将字符读入数组的一部分。

令我困惑的是它返回读取的字符数,如果它到达流的末尾则返回-1。

这是否意味着read方法一次读取1个字符并返回no。字符读取,然后一旦它到达结束它返回-1?

,例如,如果它正在读取字符串“abcd”形成带有read(cbuf,0 4)的txt文件,则返回1234,最后返回-1?

如果是这样的话,这是否意味着我们只能通过cbuf访问读取的字符?

EDIT2: 再次感谢大家,我终于弄清楚了一切。干杯!

2 个答案:

答案 0 :(得分:2)

通常,read方法(来自各种类)将在一次操作中读取最多len个字符。它可能会读更少的字符。您应该检查函数的返回值,以了解它读取了多少这样的字符。

一旦达到EOF,它将返回-1。

答案 1 :(得分:0)

查看Documentation of BufferedReader.read

  

此方法实现相应读取的一般合约   Reader类的方法。作为额外的便利,它尝试   通过反复调用read来读取尽可能多的字符   底层流的方法。这种迭代读取一直持续到   以下条件之一成为现实:

     
      
  1. 已阅读指定数量的字符
  2.   
  3. 底层流的read方法返回-1,表示文件结束。
  4.   
  5. 底层流的ready方法返回false,表明更进一步   输入请求会阻止。
  6.   

...

  

如果第一次读取基础流   返回-1表示文件结束,然后此方法返回-1。   否则,此方法返回实际读取的字符数。

...

  

通常,此方法从此流的字符中获取字符   缓冲区,根据需要从底层流中填充它。如果,   但是,缓冲区为空,标记无效,并且是请求的   长度至少与缓冲区一样大,那么这个方法就会读取   字符直接从底层流到给定数组。

相关问题