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

buf是byte数组,不管buf多大,只要按照下面这么写就一定会把文件内容读完是么

while((bytes=fis1.read(buf, 0, buf.length))!=-1)

正在回答

2 回答

每次读取buf数组长度的数据,当读到文件末尾时,因为二进制流读取是读0或1,当读到-1时说明文件已经读到末尾,此时文件读取完毕。上面的循环就是在反复读取文件,直到读到文件末尾的-1,文件读完。

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

泰兰德 提问者

非常感谢!
2015-08-30 回复 有任何疑惑可以回复我~
#2

发呆的阿呆

bytes表示的是返回时个数,为何会出现-1呢?
2015-10-24 回复 有任何疑惑可以回复我~

每判断一次while循环的条件,就会对文件进行一次读取(保存在缓冲数组中),直到最后,文件读取完毕,bytes==-1,循环结束……

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

发呆的阿呆

bytes怎么会等于-1呢?
2015-10-24 回复 有任何疑惑可以回复我~
#2

Javer_ 回复 发呆的阿呆

因为bytes实际调用的是read方法,正常情况下,read方法会将字节数返回给bytes,但是一旦到了文件末尾,read方法内部就会强制返回一个-1给bytes,这个时候bytes的意义就变了,不再是字节数了
2015-12-01 回复 有任何疑惑可以回复我~
#3

Darkchaox 回复 发呆的阿呆

当指针到达文件末尾,再次调用read方法时返回的值是-1。注意是再次调用。
2016-03-13 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

buf是byte数组,不管buf多大,只要按照下面这么写就一定会把文件内容读完是么

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