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

来源:4-2 字节流之文件输入流FileInputStream-2

慕瓜7073846

2018-04-11 21:45

如题呜呜呜呜

写回答 关注

4回答

  • 慕斯卡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,用于判断文件是否读取完成。

    望采纳。

    慕瓜7073...

    非常感谢!爱你么么哒

    2018-04-16 21:20:06

    共 1 条回复 >

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

    有没返回0的情况?

    ZCpion...

    如果文件没有内容的话,也是直接返回-1,表示读到尽头,应该是没有0的情况

    2018-08-26 15:33:57

    共 1 条回复 >

  • 爱编程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

文件传输基础——Java IO流

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

133754 学习 · 1030 问题

查看课程

相似问题