杨玲 发表于 2013-2-23 10:11
呵呵,我的观点同楼上的同学一样,这么分析吧!
我们从read方法分析起吧!
其实,老毕在视频中说,它判断的不是buf.length,而是根据底层的东西返回的-1;你发现没,buf.length是数组的长度,是个固定值,你这里想表示的该次读取的字符数,但即使是读取的字符数为0,也不代表结束,你发现没,len的值是可以为0,但不代表结束了。根据老毕的说法,windows文件都有个结束标记,查看源代码发现,字节流read方法调用的是个native方法,我推测这个read方法内部,一开始就判断这个结束标记是否为true,不为true则继续读,为true就返回-1. |