呵呵,我的观点同楼上的同学一样,这么分析吧!
我们从read方法分析起吧!
read:它接收一个byte数组,返回数组中读取到的数据长度。
那么假设我的数组长1024字节,但最后一次读取的时候流中只有500个字节了
那么返回的肯定是500而不会是-1吧?
只要当再一次读取的时候,一个字节都没有了然后它才返回-1.
所以read方法中大概的代码应该是这样的:- //我这个代码只是伪代码,只为了理清逻辑关系了,所以别跟它较真!谢谢!
- public int read(byte[] buf)
- {
- //读的代码就省了吧,只是看逻辑
- if(buf.length==0)//一个都没有读到
- return -1
- else
- return buf.length;
- }
复制代码 |