public int read() throws IOException {
if(len == pos){
len = r.read(arr);
pos = 0;
}
return len == -1 ? -1 : arr[pos++];
先看看read()方法这段代码的功能。实现了读取单个字符的功能。
假定r的关联文件有7个元素 。
第一次 read(),判断if(len == pos)满足,都是0。
调用len = r.read(arr)(此时len=5),此时数组arr中存放5个元素,然后调用pos=0,将指针放在数组第一 个元素的位置。
然后判断len==-1,不满足,因为len=5。返回arr[0]),先赋值,在++。pos++=1。第一个字符打印完
如果在调用一次read(),判断if(len == pos)不满足,因为5不等于1。判断len==-1吗,不满足,因为len=5。
返回arr[1],pos++=2。第二个字符打印完。
........
........
当打印完第五个数组后,也就是数组全部打印完,len==pos=5;在读入流中剩下的字符......循环。
所以pos的取值是0 1 2 3 4 5 ,取决于你的数组容量。 |