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

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

如题呜呜呜呜

正在回答

4 回答

你好,

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


举个例子:

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

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

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

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


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

望采纳。

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

慕瓜7073846 提问者

非常感谢!爱你么么哒
2018-04-16 回复 有任何疑惑可以回复我~

有没返回0的情况?

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

ZCpionner

如果文件没有内容的话,也是直接返回-1,表示读到尽头,应该是没有0的情况
2018-08-26 回复 有任何疑惑可以回复我~

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

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

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

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

举报

0/150
提交
取消

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

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