A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

import java.io.*;
public class MyBufferedReader {
        //定义Reader类对象,由调用者传递
        private Reader r;
       
        //定义int变量,保存行号
        private int lineNumber = 0;
        public MyBufferedReader(Reader r){this.r=r;}
       
        /*
         * 读取文本一行,返回字符串
         * 读取到文件末尾返回null
         * 使用字符串缓冲区对象
         * read方法读取一个字符,判断是不是\r \n
         * 如果都不是append到缓冲区
         * \n 一行结束了,将缓冲区变成字符串返回
         * read() -1 文件结束了,返回null
         */
        public String readLine()throws IOException{
           //创建字符串缓冲区
                StringBuilder builder = new StringBuilder();
                //使用read方法循环读取文件
                int len = 0 ;
                while((len = r.read())!=-1){
                        //len读取到的字符进行判断
                        if( len == '\r')
                                //无效字符,继续读取下一个
                                continue;
                        if( len == '\n'){
                                lineNumber++;
                                //这行结束了,将缓冲区变成字符串返回
                                return builder.toString();
                        }
                       
                        //如果两个if都不成立,有效字符,追加缓冲区
                        builder.append((char)len);
                }
                //判断缓冲区中有没有字符串,如果有就返回,没有就反null
                if(builder.length()!=0){
                        lineNumber++;
                        return builder.toString();
                }
                return null;
        }
       
        public void close()throws IOException{
                r.close();
        }

        public int getLineNumber() {
                return lineNumber;
        }

        public void setLineNumber(int lineNumber) {
                this.lineNumber = lineNumber;
        }
       
       
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马