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());
                        }
                   }
              }
         }
    }









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

黑马程序员:字符流缓冲区介绍及readLine、LineNumberReader添加行号原理

缓冲区的出现提供了数据的都写效率 对应类:BufferedReader、BufferedWriter 缓冲区的出现是为了流的操作效率而出现的, 所以在创建缓冲区之前,必须要现有流对象 示例: 1....
  • u012490278
  • u012490278
  • 2013年11月11日 21:21
  • 1028

Java如何实现按指定行读取文件

最近在开发实战中,遇到了一个这样的技术情景:     把log4j生成的日志文件定时刷进MySQL数据库,比如三个小时刷一次,那么每次刷数据的时候,如何控制文件读取是从上一次文件读取结束的地方开始继...
  • u013339851
  • u013339851
  • 2014年07月26日 15:04
  • 4351

java实现shell命令--小程序(通过Runtime和Process实现)

Process process = Runtime.getRuntime().exec java.lang.Runtime.getRuntime() 方法返回与当前的Java应用程序的运行时对象。 P...
  • haiyanstudent
  • haiyanstudent
  • 2015年10月30日 16:26
  • 2346

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

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

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

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

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

LineNumberReader  的使用 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.F...
  • zl18603543572
  • zl18603543572
  • 2015年06月21日 19:14
  • 624

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

--------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! -------------------- 1.BufferedWriter  ...
  • u011976033
  • u011976033
  • 2013年10月01日 18:44
  • 1076

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

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

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

/* 编写代码解释readLine的原理。 readLine本质上还是通过read方法来实现的。 */ import java.io.*; class MyBufferedReader { p...
  • u011573551
  • u011573551
  • 2016年05月11日 10:36
  • 1545

JAVA——LineNumberReader

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

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