码迷,mamicode.com
首页 > 其他好文 > 详细

LineNumberReader类

时间:2014-07-23 12:11:46      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   java   os   数据   

        默认情况下,行编号从 0 开始。该行号随数据读取在每个行结束符处递增,并且可以通过调用 setLineNumber(int) 更改行号。但要注意的是,setLineNumber(int) 不会实际更改流中的当前位置;它只更改将由 getLineNumber() 返回的值。可认为行在遇到以下符号之一时结束:换行符(‘\n‘)、回车符(‘\r‘)、回车后紧跟换行符。

bubuko.com,布布扣

 

FileReader fr = new FileReader(“demo.txt”);

LineNumberReader lnr = new LineNumberReader(fr);

String line = null;

lnr.setLineNumber(100);//从100开始计数,默认从1开始

while((line = lnr.readLine()) != null){

sysout(lnr.getLineNumber() + “:”+ line);

}

lnr.close();

 

-----------------------------------

模拟一个带行号的缓冲区对象

class MyLineNumberReader{

private Reader r;

private int lineNumber;

          MyLineNumberReader(Reader r){

                 this.r = r;

          }

          public String myReadLine(){

        lineNumber++;

        StringBuilder sb = new StringBuilder();

         int ch = 0;

         while((ch =r.read()) != -1){

               if(ch==’\r’)

                    continue;

               if(ch ==’n’)

                     return sb.toString();

               else

                    sb.append((char)ch);

        }

        if(sb.length() != 0){

                return sb.toString();

        }

        return null;

}

public void myClose(){

       r.close();

}

public void setLineNumber(int lineNumber){

        this.lineNumber = lineNumber;

}

public int getLineNumber(){

        return lineNumber;

}

 

main(){

        FileReader fr = new FileReader(“copyTextByBuf.java”);

MyLineNumberReader mylnr = new MyLineNumberReader(fr);

String line = null;

while((line = mylnr.myReadLine()) != null){

        sysout(line);

}

mylnr.myClose();

}

}

 

------------------------------

优化

class MyLineNumberReader extends MyBufferedReader{

 

private int lineNumber;

          MyLineNumberReader(Reader r){

                 super(r);

          }

          public String myReadLine(){

        lineNumber++;

        return super.myReadLin();

}

public void setLineNumber(int lineNumber){

        this.lineNumber = lineNumber;

}

public int getLineNumber(){

        return lineNumber;

}

 

main(){

        FileReader fr = new FileReader(“copyTextByBuf.java”);

MyLineNumberReader mylnr = new MyLineNumberReader(fr);

String line = null;

while((line = mylnr.myReadLine()) != null){

        sysout(line);

}

mylnr.myClose();

}

}

LineNumberReader类,布布扣,bubuko.com

LineNumberReader类

标签:style   blog   http   java   os   数据   

原文地址:http://www.cnblogs.com/nophy/p/3862165.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!