Java如何使用LineNumberReader类读取文件?

在此示例中,我们使用LineNumberReader类读取文件内容。我们在这里尝试做的是获取读取数据的行号。而不是引入另一个变量;例如一个整数;为了跟踪行号,我们可以利用LineNumberReader该类。此类提供了getLineNumber()一种方法来知道所读取的数据的当前行。

package org.nhooo.example.io;

import java.io.FileReader;
import java.io.LineNumberReader;

public class LineNumberReaderExample {
    public static void main(String[] args) throws Exception {
        // 我们将读取一个名为student.csv的文件,其中包含
        // 学生信息数据。
        String filename = Thread.currentThread().getContextClassLoader()
            .getResource("student.csv").getFile();

        // 要创建FileReader,我们可以传递学生数据
        //文件给读者。接下来,我们将读者带入我们的
        // LineNumberReader类。
        try (FileReader fileReader = new FileReader(filename);
             LineNumberReader lineNumberReader = new LineNumberReader(fileReader)) {
            // 如果我们在这里设置LineNumberReader的行号
            // 我们将从定义的行开始获取行号
            // 数+ 1

            //lineNumberReader.setLineNumber(400);

            String line;
            while ((line = lineNumberReader.readLine()) != null) {
                // 我们打印出学生数据并显示哪一行
                // 目前由我们的程序读取。
                System.out.printf("Line Number %s: %s%n",
                    lineNumberReader.getLineNumber(), line);
            }
        }
    }
}

该/resources/student.csv文件中:

Alice, 7
Bob, 8
Carol, 5
Doe, 6
Earl, 6
Malory, 8

这是上面的代码片段的结果:

Line Number 1: Alice, 7
Line Number 2: Bob, 8
Line Number 3: Carol, 5
Line Number 4: Doe, 6
Line Number 5: Earl, 6
Line Number 6: Malory, 8