2019-05-19

---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;

}

你可能感兴趣的:(2019-05-19)