自定义BufferedReader的实例
缓冲区的建立目的就是增加传输性能,使我们传输数据更加快速
缓冲区的内部其实很简单就是在内部封装了一个数组用数组来存储数据对外提供一些方法对数组进行访问
其中这些方法的操作就是对数组的指针(角标)。
缓冲区的原理:从源中获取一批数据到缓冲区,再从缓冲区中一个一个取出取完后用-1作为结束标记
在BufferedReader中我们读取数据方法有read(),readLine()
read()其参数为char[],cbuf,intoff,intlen。其返回值为-1
readLine()方法是一行一行的取其内部就像是一个字符串容器StringBuffder其返回值为null;
首先定义一个类在类中定义两个读取数据的方法MyReader(),MyReadLine();
publicclassMyBufferedReader{
privateFileReaderfr;
privatechar[]buff=newchar[1024];
privateintzz=0;
privateintcount=0;
MyBufferedReader(FileReaderfr){
this.fr=fr;
}
publicintMyRead()throwsIOException{
if(count==0){
count=fr.read(buff);
zz=0;
}
if(count<0)
return-1;
charch=buff[zz++];
count--;
returnch;
}
publicStringMyReadLine()throwsIOException{
StringBuilderstb=newStringBuilder();
intch=0;
while((ch=MyRead())!=-1){
if(ch=='\r')
continue;
if(ch=='\n')
returnstb.toString();
stb.append((char)ch);
}
if(stb.length()!=0)
returnstb.toString();
returnnull;
}
publicvoidMyClose()throwsIOException{
fr.close();
}
}
里面我定义了指针zz和一个缓冲区计数器count来记录缓冲区内读取数据的变化
当count==0时就往缓冲区内读入数据zz为0从第一个数开始读
小于0时数据读取完毕返回-1
在MyReadLine()中创建一个字符串容器StringBuilder来存储数据党stb==\n时一行读取完毕其返回值为null;
以上这篇自定义BufferedReader的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。