缓冲区的建立目的就是增加传输性能,使我们传输数据更加快速
缓冲区的内部其实很简单 就是在内部封装了一个数组 用数组来存储数据 对外提供一些方法对数组进行访问
其中这些方法的操作就是对数组的指针(角标)。
缓冲区的原理:从源中获取一批数据到缓冲区,再从缓冲区中一个一个取出 取完后用-1作为结束标记
在BufferedReader中我们读取数据方法有read() ,readLine()
read() 其参数为char[],cbuf,int off,int len。其返回值为-1
readLine()方法是一行一行的取 其内部就像是一个字符串容器StringBuffder 其返回值为null;
首先定义一个类 在类中定义两个读取数据的方法 MyReader(),MyReadLine();
public class MyBufferedReader {
private FileReader fr;
private char\[\] buff = new char\[\];
private int zz = ;
private int count = ;
MyBufferedReader(FileReader fr){
this.fr = fr;
}
public int MyRead() throws IOException{
if(count==){
count = fr.read(buff);
zz =;
}
if(count<)
return -;
char ch = buff\[zz++\];
count--;
return ch;
}
public String MyReadLine() throws IOException{
StringBuilder stb = new StringBuilder();
int ch = ;
while((ch=MyRead())!=-){
if(ch=='\\r')
continue;
if(ch=='\\n')
return stb.toString();
stb.append((char)ch);
}
if(stb.length()!=)
return stb.toString();
return null;
}
public void MyClose() throws IOException{
fr.close();
}
}
里面我定义了指针zz 和一个缓冲区计数器count来记录缓冲区内读取数据的变化
当count==0时 就往缓冲区内读入数据 zz为0 从第一个数开始读
小于0时数据读取完毕 返回-1
在MyReadLine()中 创建一个字符串容器StringBuilder 来存储数据党stb==\n时 一行读取完毕其返回值为null;
想学小程序和Python私我 QQ:3275724538
手机扫一扫
移动阅读更方便
你可能感兴趣的文章