Java IO中的LineNumberReader类继承自BufferedReader,也就是说该类继承了BufferedReader的高级功能,每次可以读取一行数据。LineNumberReader类增加了获取和设置行号的功能。默认情况下,行编号从 0 开始。该行号随数据读取在每个行结束符处递增,并且可以通过调用 setLineNumber(int) 更改行号。但要注意的是,setLineNumber(int) 不会实际更改流中的当前位置;它只更改将由 getLineNumber() 返回的值。
可认为行在遇到以下符号之一时结束:换行符(' ')、回车符(' ')、回车后紧跟换行符。
实例:读取document目录下面的reader.txt文件,然后输出读取的每一行数据且在输出数据前加上行号。
package io.reader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; public class LineNumberReaderTest { public static void main(String[] args) { LineNumberReader reader = null; try { reader = new LineNumberReader( new InputStreamReader( new FileInputStream("document/reader.txt"))); String line = ""; // 获取行号 int lineNumber = reader.getLineNumber(); while ( (line = reader.readLine()) != null ) { // 输出读到的行号和字符行 System.out.println(lineNumber + ": " + line); lineNumber = reader.getLineNumber(); } } catch (Exception e) { e.printStackTrace(); } finally { if ( null != reader ) { try { reader.close(); reader = null; } catch (IOException e) { e.printStackTrace(); } } } } }
输出结果:
0: 静夜思 1: 床前明月光,疑是地上霜。 2: 举头望明月,低头思故乡。