原文: https://howtodoinjava.com/java/io/java-io-linenumberreader-example-to-read-file-line-by-line/

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

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

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

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

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

  1. firstName=Lokesh
  2. lastName=Gupta
  3. blog=howtodoinjava
  4. technology=java

LineNumberReader示例

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

  1. import java.io.FileReader;
  2. import java.io.IOException;
  3. import java.io.LineNumberReader;
  4. public class LineNumberReaderExample
  5. {
  6. public static void main(String[] args)
  7. {
  8. readFromFile("app.properties");
  9. }
  10. private static void readFromFile(String filename)
  11. {
  12. LineNumberReader lineNumberReader = null;
  13. try
  14. {
  15. //Construct the LineNumberReader object
  16. lineNumberReader = new LineNumberReader(new FileReader(filename));
  17. //Print initial line number
  18. System.out.println("Line " + lineNumberReader.getLineNumber());
  19. //Setting initial line number
  20. lineNumberReader.setLineNumber(5);
  21. //Get current line number
  22. System.out.println("Line " + lineNumberReader.getLineNumber());
  23. //Read all lines now; Every read increase the line number by 1
  24. String line = null;
  25. while ((line = lineNumberReader.readLine()) != null)
  26. {
  27. System.out.println("Line " + lineNumberReader.getLineNumber() + ": " + line);
  28. }
  29. }
  30. catch (Exception ex)
  31. {
  32. ex.printStackTrace();
  33. } finally
  34. {
  35. //Close the LineNumberReader
  36. try {
  37. if (lineNumberReader != null){
  38. lineNumberReader.close();
  39. }
  40. } catch (IOException ex){
  41. ex.printStackTrace();
  42. }
  43. }
  44. }
  45. }
  46. Output:
  47. Line 0
  48. Line 5
  49. Line 6: firstName=Lokesh
  50. Line 7: lastName=Gupta
  51. Line 8: blog=howtodoinjava
  52. Line 9: technology=java

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

祝您学习愉快!