课程
/后端开发
/Java
/文件传输基础——Java IO流
(bytes = in.read(buf,0,buf.length))!=-1是什么意思?返回的字节个数为什么会等于-1啊?是0或者正数才对啊?不明白,先谢谢了!
2015-07-23
源自:文件传输基础——Java IO流 4-2
正在回答
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”,方法就是这么定义的。
felix12 提问者
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?
举报
为您介绍IO流的使用,以及对象的序列化和反序列化的内容
5 回答bytes = in.read(buf,0,buf.length))!=-1 什么意思
3 回答while((bytes = in.read(buf,0,buf.length))!=-1)这里有疑问
2 回答while((bytes = in.read(buf,0,buf.length))!=-1),循环有何意义啊
2 回答int b = in.read(); 与int bytes = in.read(buf,0,buf.length);有什么差
2 回答while((bytes=in.read(buf,0,buf.length))!=-1)这个条件里面bytes的值不是固定的吗?