LineNumberReader类

原创 2013年12月03日 12:00:00
public class LineNumberReader extends BufferedReader
这个类是用来获取读取的行号,和设置起始行号。
这个方法也像BufferedReader类一样采用了装饰者设计模式,对Read流操作对象进行了装饰,增强了比BufferedReader类更强的功能

LineNumberReader(Reader in)
使用默认输入缓冲区的大小创建新的行编号 reader。

1.readLine()方法
     这个方法是覆写父类BufferedReader类中的readLine()方法,这个方法在父类BufferedReader类的readLine()基础上,设置了每读取一行设置行号的功能。实际上就是在父类调用readLine()时调用设置lineNumber++;
     同样这个方法和父类BufferedReader类中的readLine()一样不会读取\r\n或\n,这些换行符,所以如果向控制台打印的话需要使用println()方法,而向文件中写入的话需要使用BufferedWriter中的newLine()方法,写入一个换行符。

    (1).没有写入换行符
          例:
              
public static void main(String[] args) throws IOException

         {
              FileReader reader = new FileReader("TestLinNumberReader.java");
              LineNumberReader lineReader = new LineNumberReader(reader);//LineNumberReader是一个装饰类
              String txt = null;
              while((txt = lineReader.readLine())!=null){
                   System.out.print(lineReader.getLineNumber()+": "+txt);
              }
              //因为LineNumberReader是一个装饰类,所以直接关闭的是FileReader流
              lineReader.close();
         }



   


        (2).写入换行符:
                例:
                      
 public static void main(String[] args) throws IOException

             {

                  FileReader reader = new FileReader("TestLinNumberReader.java");

                  LineNumberReader lineReader = new LineNumberReader(reader);//LineNumberReader是一个装饰类

                  String txt = null;

                  while((txt = lineReader.readLine())!=null){

                       System.out.println(lineReader.getLineNumber()+": "+txt);

                  }

                  //因为LineNumberReader是一个装饰类,所以直接关闭的是FileReader流

                  lineReader.close();

             }








2.setLineNumber(int lineNumber)方法
     设置行号的起始数字,默认的是从0开始,设置后,就从lineNumber开始
          例:
            
  public static void main(String[] args) throws IOException

         {
              FileReader reader = new FileReader("TestLinNumberReader.java");
              LineNumberReader lineReader = new LineNumberReader(reader);//LineNumberReader是一个装饰类
              String txt = null;
              lineReader.setLineNumber(10);
              while((txt = lineReader.readLine())!=null){
                   System.out.println(lineReader.getLineNumber()+": "+txt);
              }
              //因为LineNumberReader是一个装饰类,所以直接关闭的是FileReader流
              lineReader.close();
         }






3.getLineNumber()方法
     获取设置的每行的行号



(1).LineNumberReader结合BufferedWriter的用法:
     例:
          
        
 import java.io.*;

    public class TestLinNumberReader
    {
         public static void main(String[] args)
         {
              FileReader reader = null;
             
              FileWriter writer = null;
              LineNumberReader lineReader = null;
             
              BufferedWriter bufw = null;
              String txt = null;
              try{
                   reader = new FileReader("TestLinNumberReader.java");
                   lineReader = new LineNumberReader(reader);//LineNumberReader是一个装饰类
                   writer = new FileWriter("demo.txt");//这里的demo.txt可以不存在
                   bufw = new BufferedWriter(writer);
                   while((txt = lineReader.readLine())!=null){
                        bufw.write(lineReader.getLineNumber()+":"+txt);
                        bufw.newLine();
                   }
              }catch(Exception e){
                   e.printStackTrace();
              }finally{
                   try{
                        if(lineReader!=null){
                             //因为LineNumberReader是一个装饰类,所以直接关闭的是FileReader流
                             lineReader.close();
                        }
                   }catch(Exception e){
                        System.out.println(e.toString());
                   }finally{
                        try{
                             if(bufw!=null){
                                  bufw.close();
                             }
                        }catch(Exception e){
                             System.out.println(e.toString());
                        }
                   }
              }
         }
    }









版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

《黑马程序员》 装饰类-自定义BufferedReader和LineNumberReader

class MyBufferedReader extends Reader { //要覆盖父类中的抽象方法 private Reader r; public MyBufferedReader(...
  • xfgzss
  • xfgzss
  • 2014年04月19日 22:10
  • 459

JAVA之IO技术-自定义的LineNumberReader类

package ioTest.io2; /* * 自定义一个带有读取行号方法的读取文件的装饰类 */ import java.io.FileReader; import java.io.IOExc...
  • HYM1987
  • HYM1987
  • 2014年05月02日 22:23
  • 746

黑马程序员_<<字符流的缓冲技术和装饰类(BufferedWriter,BufferedReader,LineNumberReader)>>

--------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! -------------------- 1.BufferedWriter  ...

java基础—IO类——LineNumberReader 的使用

LineNumberReader  的使用 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.F...

IO流_LineNumberReader

FileReader fr = new FileReader("d:\\buf.txt"); LineNumberReader lnr = new LineNumberReader(fr);...
  • xjt5201
  • xjt5201
  • 2012年09月25日 16:58
  • 236

黑马程序员——21,字符流FileReader,FileWriter,BufferedWriter,BufferedReader,装饰设计模式,LineNumberReader

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------                  黑马程序员——21,字符流FileReader,FileW...

IO流——LineNumberReader

import java.io.*; class LineNumberReaderDemo { public static void main(String[] args)throws IOExc...

java--IO流-LineNumberReader,读取键盘录入,字符字节流转换,改变标准输入输出设备,异常的日志信息,系统信息

LineNumberReader: 跟踪行号的缓冲字符输入流。此类定义了方法 setLineNumber(int) 和 getLineNumber(),它们可分别用于设置和获取当前行号。 构造方法...

java 解释readLine的原理及LineNumberReader的原理

/* 编写代码解释readLine的原理。 readLine本质上还是通过read方法来实现的。 */ import java.io.*; class MyBufferedReader { p...

JAVA——LineNumberReader

import java.io.*; class LineNumberReaderDemo { public static void main(String[] args)throws IOEx...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LineNumberReader类
举报原因:
原因补充:

(最多只允许输入30个字)