---read方法
自定义的读取缓冲区,其实就是模拟一个BufferedReader
缓冲区无非就是封装一个数组对外提供更多的方法对数组进行访问
其实这些方法最终操作的就是数组的角标
缓冲区的原理:
其实就是从源中获取一批数据装入数组中(缓冲区)
再从数组(缓冲区)中不断取出一个一个数据中
在此次取完后,再从源中继续取一批数据进入缓冲区
当源中的数据取光时,用-1作为结束标记。
public class MyBufferedReader{
private FileReader r;
private char[] buf =new char[1024];//定义一个数组作为缓冲区
private int pos =0;
MyBufferedReader(FileReader r){
this.r=r;
}
public int MyRead(){
//当count等于0的时候调用底层的read
if(count==0)
{
count=r.read(buf);
pos=0;
if(count<0)
{
return -1;//没了返回-1
}
//每次获取数据到缓冲区,角标归零
char ch=buf[pos++];//每次读取一个
count--;
return ch;
}
if(count>0)
{
char ch=buf[pos++];//每次读取一个
count--;
return ch;
}
}
}
public String myReadLine()
{
StringBuffer sb=new StringBuffer();
while((ch=myRead())!=-1)
{
if(ch=='\r')
continue;
if(ch=='\n')
return sb.toString;
Sb.append((char)ch);
}
return null;
}