首页 > 开发 > Java > 正文

基于自定义BufferedReader中的read和readLine方法

2024-07-13 10:14:46
字体:
来源:转载
供稿:网友

实例如下所示:

package day0208; import java.io.FileReader;import java.io.IOException; /* * 自定义读取缓冲区,实现BufferedReader功能 * 分析: * 缓冲区就是封装了一个数组,并对外提供了更多的方法对数组进行访问 * 其实这些方法最终操作的都是数组的角标 * 缓冲的原理: * 其实就是从源中获取一批数据装进缓冲区,再从缓冲区取出数据 * 当此次取完后,继续从源中取出一批数据到缓冲区 * 当源中的数据取光时,用-1作为结束标记。 */public class MyBufferReader {    private FileReader r;    MyBufferReader(FileReader r){       this.r=r;    }    //定义一个数组作为缓冲区    private char[] buf=new char[1024];    //定义个指针用于操作这个数组的元素,当操作到最后一个元素后,指针应该归零    private int pos=0;    //定义一个计数器,用于记录缓冲区中的数据个数,当该数据减到0,就从源中继续获取数据到缓冲区中。    private int count =0;    public int myRead() throws IOException{//自定义read方法       if(count==0){//如果缓冲区中没有数据,则从源中获取一批数据到缓冲区           count=r.read(buf);           pos=0;       }       if(count<0){           return -1;       }       char ch=buf[pos++];//一次从缓冲区获取一个字符       count--;       return ch;    }    public String myReadLine() throws IOException{//自定义readLine犯法       StringBuilder sb=new StringBuilder();       int ch=0;       while((ch=myRead())!=-1){//只要还有数据就进行读取           if(ch=='/n')//java换行符,停止读取,将已经读取到的数据输出返回              return sb.toString();           if(ch=='/r')              continue;//window下的换行符,不读也不换行,继续读取后面的字符           sb.append((char)ch);//正常情况下,不断进行读取       }       if(sb.length()!=0)//如果文档中中有字符,就返回读取到的数据           return sb.toString();       return null;//如果是空文档,就返回空    }    public void myClose() throws IOException{       r.close();//关闭流资源    }}

这样就Ok了,可以进行检测

package day0208; import java.io.FileReader;import java.io.IOException; public class MyDemo {  public static void main(String[] args) throws IOException {    FileReader fw=new FileReader("C://demo2.txt");    MyBufferReader br=new MyBufferReader(fw);    String line1=null;    while((line1=br.myReadLine())!=null){      System.out.println(line1);    }//   int num=0;//   while((num=br.myRead())!=-1){//     System.out.print((char)num);//   }    br.myClose();  }}

两种检测方法都可以。

以上这篇基于自定义BufferedReader中的read和readLine方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表