为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

正在回答

5 回答

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”,方法就是这么定义的。

0 回复 有任何疑惑可以回复我~
#1

felix12 提问者

非常感谢!
2015-07-24 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信