# Java – 逐行读取文件 – `LineNumberReader`

> 原文： [https://howtodoinjava.com/java/io/java-io-linenumberreader-example-to-read-file-line-by-line/](https://howtodoinjava.com/java/io/java-io-linenumberreader-example-to-read-file-line-by-line/)

如果您只想按特定要求逐行读取文件的内容，则`LineNumberReader`可能是您的理想选择。 `LineNumberReader`是`BufferedReader`类的子类，可让您跟踪当前正在处理的行。 行号从 0 开始。每当`LineNumberReader`在包装的`Reader`返回的字符中遇到行终止符时，行号都会递增。

您可以通过调用`getLineNumber()`方法来获取当前行号。 `LineNumberReader`还使您可以通过调用`setLineNumber()`方法将当前行号重置为另一个号码（为什么要这样做？）。

如果您要分析可能包含错误的文本文件，则行号可能会很方便。 向用户报告错误时，如果您的错误消息中包含遇到错误的行号，则更容易纠正错误。

让我们建立一个简单的示例来展示`LineNumberReader`的特性。

在下面的示例中，这是我将使用`LineNumberReader`读取的文件内容。

```java
firstName=Lokesh
lastName=Gupta
blog=howtodoinjava
technology=java

```

## `LineNumberReader`示例

这是使用`LineNumberReader`逐行读取以上文件内容的代码。

```java
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;

public class LineNumberReaderExample
{
   public static void main(String[] args)
   {
      readFromFile("app.properties");
   }

   private static void readFromFile(String filename)
   {
      LineNumberReader lineNumberReader = null;
      try
      {
         //Construct the LineNumberReader object
         lineNumberReader = new LineNumberReader(new FileReader(filename));

         //Print initial line number 
         System.out.println("Line " + lineNumberReader.getLineNumber());

         //Setting initial line number
         lineNumberReader.setLineNumber(5);

         //Get current line number
         System.out.println("Line " + lineNumberReader.getLineNumber());

         //Read all lines now; Every read increase the line number by 1
         String line = null;
         while ((line = lineNumberReader.readLine()) != null)
         {
            System.out.println("Line " + lineNumberReader.getLineNumber() + ": " + line);
         }
      } 
      catch (Exception ex)
      {
         ex.printStackTrace();
      } finally
      {
         //Close the LineNumberReader
         try {
            if (lineNumberReader != null){
               lineNumberReader.close();
            }
         } catch (IOException ex){
            ex.printStackTrace();
         }
      }
   }
}

Output:

Line 0
Line 5
Line 6: firstName=Lokesh
Line 7: lastName=Gupta
Line 8: blog=howtodoinjava
Line 9: technology=java

```

这就是将这个有用的课程向你介绍的知识的全部。

**祝您学习愉快！**