模拟BufferedReader和LineNumberReader功能
BufferedReader是一个装饰对象,增强了了Reader中的读取功能,
模拟BufferedReader就是自己写一个方法来读取对象,就是对Reader中read()方法的增强
LineNuberReader只要在自定义BufferedReader功能的时候,没读取一行加上行号
定义一个计数器,每读完一行,计数器加一,把值放到每行的首位
代码如下:- class MyBufferedReader
- {
- private static Reader r ;
- int lineNumber = 0;
- public MyBufferedReader(Reader r){
- this.r = r;
- lineNumber = 0;
- }
- public String myRead() throws Exception{
- StringBuilder sb = new StringBuilder();
- //用Reaer自身的方法读取字符
- int len = 0;
-
- while((len = r.read())!=-1){
-
- //判断读取到的位置
- if(len =='\t')
- continue;
- if(len =='\n'){
- //读完一行,将缓冲区对象转成字符串
- lineNumber++;
- return addLineNumber(sb.toString());
-
- }
- //如果不到一行,将字符添加到sb
- sb.append((char)len);
- }
- if(sb.length()!=0)
- return (lineNumber+":"+sb.toString());
- else
- return null;
- }
- public String addLineNumber(String s){
- return lineNumber+":"+s;
- }
- public void close() throws Exception{
- r.close();
- }
- }
复制代码 |