课程
/后端开发
/Java
/文件传输基础——Java IO流
(b=in.read(buf,o,buf.length))!=-1 b返回的不是字节个数吗 怎么可能等于-1呢
2015-12-21
源自:文件传输基础——Java IO流 4-3
正在回答
不知道你有没有看read这个方法的API, 关于这个方法的返回是这样描述的
the total number of bytes read into the buffer, or -1 if there is no more data because the end of the file has been reached.
就是说这个方法是返回一共能读取的字节个数,如果已经读完的话会返回-1 这个值,不过为什么要返回-1, 是人家自己设计的,如果感兴趣可以去看源码。希望能帮到你
读完确实是-1,读满返回的就是读取字节的长度,当然现在等于数组的长度,然后进入循环,接着,再次执行while判断,从新读取,再次给数组赋值,直到读取完毕,返回-1.
read这个方法是如果流中的内容读取完或者是自定义的字节缓冲区buf被使用满了,会在后面跟着返回一个-1值,以让程序继续下去。
一般都是:
Byte[] buf = new Byte[1024*1024]; //自定义的字节缓冲区
int len = 0;
while((len= fis.read(buf)) != -1){ //返回的是数组中的个数,如读完或读满,则返回-1
fos.write(buf);
}
bryan4it
这是从buf这个对象中的0到buf的长度一个个读取u,当读完了 之后显示-1是结束的意思!
举报
为您介绍IO流的使用,以及对象的序列化和反序列化的内容
2 回答in.read(buf, 0, buf.length)这个方法可能为-1吗
5 回答不懂,bytes = in.read(buf,0,buf.length))!=-1
2 回答int b = in.read(); 与int bytes = in.read(buf,0,buf.length);有什么差
5 回答bytes = in.read(buf,0,buf.length))!=-1 什么意思
5 回答关于while((b=in.read(by,0,by.length))!=-1),这个这的返回值是怎么回事?