JavaIO流(5)

来源:互联网 发布:网络咋骗怎么判刑 编辑:程序博客网 时间:2024/04/29 16:09
/*
自定义一个BufferedReader类 并实现readLine()和close()方法
*/
import java.io.*;
class MyBufferedReader extends Reader
{
    private Reader fr;
    MyBufferedReader(Reader fr){
        this.fr = fr;
    }
    //可以一次读取一行数据的方法
    //方法要抛出异常谁调用。。谁处理
    public String MyReadLine() throws IOException{
        //定义一个临时容器 原BufferedReader封装的是字符数组
        //这里用StringBuilder容器,最后变成字符串
        StringBuilder sb = new StringBuilder();
        int ch= 0 ;
        while((ch=fr.read())!=-1){
            if(ch=='\r')
                continue;
            if(ch=='\n')
                //读到'\n'才返回
                return sb.toString();
            else
            sb.append((char)ch);
        }
        //最后一行末尾没有回车符 不会被返回
        //所以只要sb中的数据长度不为0 就返回
        if(sb.length()!=0)
            return sb.toString();
        //读到文件末尾要返回空
        return null;
    }
    /*
     覆盖Reader中的抽象方法
    */
    public int read(char[] cbuf, int off, int len) throws IOException{
        return fr.read(cbuf,off,len);
    }

    public void close() throws IOException{
        fr.close();
    }
    public void MyClose() throws IOException{
        fr.close();
    }
}
class MyBufferedReaderDemo
{
    public static void main(String[] args) throws IOException{
        FileReader fr = new FileReader("buf.txt");
        MyBufferedReader mybuf = new MyBufferedReader(fr);
        String line = null;
        while((line=mybuf.MyReadLine())!=null){
            System.out.println(line);
        }
        mybuf.MyClose();
    }
}


原创粉丝点击