java.io.LineNumberReader类介绍

LineNumberReader 是 Java 中一个用于读取文本行并记录行号的字符输入流类。它是 java.io 包的一部分,并且继承自 BufferedReaderLineNumberReader 提供了一种方便的方法来读取输入流中的行,同时自动记录每一行的行号。

注:BufferedReader/BufferedWriter 的缓冲机制使得读取操作更加高效,尤其是在处理大型文本文件时。

构造方法

LineNumberReader 提供了以下几种构造方法:

  1. LineNumberReader(Reader in): 该构造方法接受一个 Reader 对象作为参数,并使用默认的缓冲区大小创建一个 LineNumberReader 实例。

Reader reader = new FileReader("example.txt");
LineNumberReader lineNumberReader = new LineNumberReader(reader);

LineNumberReader(Reader in, int sz): 该构造方法接受一个 Reader 对象和一个整数作为参数,指定缓冲区的大小。

Reader reader = new FileReader("example.txt");
LineNumberReader lineNumberReader = new LineNumberReader(reader, 4096);

主要方法

LineNumberReader 继承了 BufferedReader 的所有方法,并且增加了一些自己独有的方法。

  1. int getLineNumber(): 返回当前行号。行号从 0 开始计数,如果没有读取任何行,则返回 -1。

int lineNumber = lineNumberReader.getLineNumber();

void setLineNumber(int lineNumber): 设置当前行号。该方法不会更改实际的流内容,只是改变内部行号计数器的值。

lineNumberReader.setLineNumber(10);

String readLine(): 读取一行文本,并返回该行内容。如果已到达流的末尾,则返回 null

String line = lineNumberReader.readLine();

void mark(int readAheadLimit): 标记流中的当前位置。可以通过 reset() 方法返回到这个位置。readAheadLimit参数表示在标记位置之前可以读取的字符数限制。

lineNumberReader.mark(100);

void reset(): 将流重置到最后标记的位置。必须在调用 mark() 之后调用。

lineNumberReader.reset();

void close(): 关闭 LineNumberReader 并释放与之关联的所有资源。

lineNumberReader.close();

示例代码

以下是一个使用 LineNumberReader 的简单示例,读取文件内容并打印每一行的行号和内容:

import java.io.*;

public class LineNumberReaderExample {
    public static void main(String[] args) {
        try {
            FileReader fileReader = new FileReader("example.txt");
            LineNumberReader lineNumberReader = new LineNumberReader(fileReader);

            String line;
            while ((line = lineNumberReader.readLine()) != null) {
                System.out.println("Line " + lineNumberReader.getLineNumber() + ": " + line);
            }

            lineNumberReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 在这个示例中,LineNumberReader 被用来读取 example.txt 文件的每一行,并打印行号和行内容。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值