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

不懂,bytes = in.read(buf,0,buf.length))!=-1

(bytes = in.read(buf,0,buf.length))!=-1是什么意思?返回的字节个数为什么会等于-1啊?是0或者正数才对啊?不明白,先谢谢了!

提问者:felix12 2015-07-23 18:01

个回答

  • 管理員
    2015-07-24 08:16:34
    已采纳

    if(bytes = in.read(buf,0,buf.length))!=-1

    相当于

    if(in.read(buf,0,buf.length)!=-1){//但是却不能这么写

        bytes = in.read(buf,0,buf.length);

    }

    可以研究一下怎么看jdk源码

    如果读到了末尾会返回一个值“-1”,方法就是这么定义的。

  • 毕业了的小怪兽
    2017-08-20 18:07:17

     in.read(buf,0,buf.length)这个函数会返回读取到的字节个数,给你举例子你就明白了,比如你的buf数组的长度是450,这个时候你读取的文件的字节长度是500,那么第一次执行,我们只能先读450个字节,在读取文件的时候,会有指针从开头跟着走,我们读取了450个,那么指针就走到了450,bytes的值是450,此时还剩50个字节,用while就可以再进行一次读取,从451开始读起,一直到结束,bytes的值是50,然后第三次没有了,读不到东西了,bytes就是-1了,while循环结束,就是酱。

  • CyberLiu
    2015-09-28 18:35:55

    bytes = in.read(buf,0,buf.length)) 返回的是读取到的字节的个数,个数。。怎么会等于-1

    难道获取不到字节,这个in.read()就会返回-1?