(bytes = in.read(buf,0,buf.length))!=-1是什么意思?返回的字节个数为什么会等于-1啊?是0或者正数才对啊?不明白,先谢谢了!
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”,方法就是这么定义的。
in.read(buf,0,buf.length)这个函数会返回读取到的字节个数,给你举例子你就明白了,比如你的buf数组的长度是450,这个时候你读取的文件的字节长度是500,那么第一次执行,我们只能先读450个字节,在读取文件的时候,会有指针从开头跟着走,我们读取了450个,那么指针就走到了450,bytes的值是450,此时还剩50个字节,用while就可以再进行一次读取,从451开始读起,一直到结束,bytes的值是50,然后第三次没有了,读不到东西了,bytes就是-1了,while循环结束,就是酱。
bytes = in.read(buf,0,buf.length)) 返回的是读取到的字节的个数,个数。。怎么会等于-1
难道获取不到字节,这个in.read()就会返回-1?