问答详情
源自:4-5 字节缓冲流

为什么要读到-1就结束,读到别的不行么,不是很懂

为什么要读到-1就结束,读到别的不行么,不是很懂

while ((c = bis.read()) != -1) {

bos.write(c);

bos.flush();// 刷新缓冲区


提问者:hengly 2015-07-15 17:49

个回答

  • yangyang533
    2017-12-24 19:50:12

    read

    public abstract int read()
                     throws IOException

    从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞。

    子类必须提供此方法的一个实现。


    返回:

    下一个数据字节;如果到达流的末尾,则返回 -1。

    抛出:

    IOException - 如果发生 I/O 错误。

    从API的理解来看,read是每次读取一个byte,byte只有8位,范围就是0-255,只不过read将他作为一个32位的int值返回出来,正常情况时不可能返回负数的,所以返回一个负数肯定是特殊情况了。这是我的理解,希望对你有帮助。

  • 岳阳白少
    2015-12-01 14:13:13

    书上写的一个返回整型的方法就不能简单的通过返回-1表示错误,因为-1很可能是一个完全合法的结果。

  • 麦尔丹
    2015-10-01 16:55:58

    不会的,你建议去看看这个方法的API,说再多都不如看这个方法的源代码来的有效

  • 麦尔丹
    2015-08-24 13:39:21

    方法定义是,当文件没有可读取内容时 返回-1,也就是文件已经读完后返回-1。

  • LifeRealm
    2015-07-22 19:10:17

    方法定义就是这样的,我们只能后接受。

  • ybbzbb
    2015-07-15 21:24:32

    .read()这个方法是读取的意思。如果有值就返回1 没有值得话返回-1