问答详情
源自:4-2 字节流之文件输入流FileInputStream-2

while((bytes = in.read(buf,0,buf.length))!=-1)这里read返回给bytes 的到底是什么?为什么会出现-1这种情况

如题呜呜呜呜

提问者:慕瓜7073846 2018-04-11 21:45

个回答

  • 慕斯卡3197864
    2018-04-14 11:58:39
    已采纳

    你好,

    一开始read返回的是读取的字节数;当把内容都读完后,返回的数为-1


    举个例子:

    例如要读取的文件字节数是100,buf.length为60。

    第一次read返回给bytes的是读取的字节数:大小为数组的长度60;

    第二次read返回给bytes的还是读取的字节数,但大小为剩下的100-60=40了;

    第三次由于到文件末尾,100个字节内容都读完了,read就返回-1给bytes


    综上,文件没读完时,read返回的是读取的字节数;文件读完后,read返回的是-1,用于判断文件是否读取完成。

    望采纳。

  • Elin灬
    2018-06-14 16:18:18

    有没返回0的情况?

  • 爱编程and爱逻辑
    2018-04-12 20:48:56

    https://img4.mukewang.com/5acf54fb0001f7b616280340.jpg直接给你java api,哈哈,看到没,返回-1说明已经到头了,那么循环就要停止喽,求采纳

  • weibo_山人渔光Mr_0
    2018-04-12 19:47:46

    返回的是字节char类型的,char不存在的时候,为-1