Dreamer012
2015-12-21 12:36
(b=in.read(buf,o,buf.length))!=-1 b返回的不是字节个数吗 怎么可能等于-1呢
不知道你有没有看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);
}
这是从buf这个对象中的0到buf的长度一个个读取u,当读完了 之后显示-1是结束的意思!
文件传输基础——Java IO流
133754 学习 · 1030 问题
相似问题