Module java.base
Package java.io

Class LineNumberReader

所有已实现的接口:
Closeable, AutoCloseable, Readable

public class LineNumberReader extends BufferedReader
一个缓冲字符输入流,可以跟踪行号。该类定义了用于设置和获取当前行号的方法setLineNumber(int)getLineNumber()

默认情况下,行号从0开始。每次读取数据时,该数字在每个行终止符处递增,并且在流的末尾(如果流中的最后一个字符不是行终止符)时也会递增。可以通过调用setLineNumber(int)来更改此数字。但请注意,setLineNumber(int)实际上不会更改流中的当前位置;它只会更改getLineNumber()将返回的值。

一行被任何一个换行符('\n')、回车符('\r')或紧接着回车符后面的换行符终止,或者之前的终止符后面跟着流的结尾,或者流的结尾不是另一个终止符而是终止。

自版本:
1.1
  • Constructor Details

    • LineNumberReader

      public LineNumberReader(Reader in)
      使用默认输入缓冲区大小创建一个新的行号读取器。
      参数:
      in - 提供基础流的Reader对象
    • LineNumberReader

      public LineNumberReader(Reader in, int sz)
      使用给定大小的缓冲区创建一个新的行号读取器。
      参数:
      in - 提供基础流的Reader对象
      sz - 指定缓冲区的大小的int
  • Method Details

    • setLineNumber

      public void setLineNumber(int lineNumber)
      设置当前行号。
      参数:
      lineNumber - 指定行号的int
      参见:
    • getLineNumber

      public int getLineNumber()
      获取当前行号。
      返回:
      当前行号
      参见:
    • read

      public int read() throws IOException
      读取单个字符。将行终止符压缩为单个换行符('\n')。每当读取到行终止符时,或者当到达流的末尾且流中的最后一个字符不是行终止符时,当前行号都会递增。
      覆盖:
      read 在类中 BufferedReader
      返回:
      读取的字符,如果已到达流的末尾则为-1
      抛出:
      IOException - 如果发生I/O错误
    • read

      public int read(char[] cbuf, int off, int len) throws IOException
      将字符读入数组的一部分。此方法将阻塞,直到有输入可用,发生I/O错误,或者到达流的末尾。

      如果len为零,则不会读取任何字符,并返回0;否则,将尝试读取至少一个字符。如果没有字符可用,因为流已经结束,则返回值为-1;否则,至少读取一个字符并存储到cbuf中。

      行终止符被压缩为单个换行符('\n')。每当读取到行终止符时,或者当到达流的末尾且流中的最后一个字符不是行终止符时,当前行号都会递增。

      覆盖:
      read 在类中 BufferedReader
      参数:
      cbuf - 目标缓冲区
      off - 开始存储字符的偏移量
      len - 要读取的最大字符数
      返回:
      读取的字符数,如果已到达流的末尾则为-1
      抛出:
      IndexOutOfBoundsException - 如果off为负数,或len为负数,或len大于cbuf.length - off
      IOException - 如果发生I/O错误
    • readLine

      public String readLine() throws IOException
      读取一行文本。将行终止符压缩为单个换行符('\n')。每当读取到行终止符时,或者当到达流的末尾且流中的最后一个字符不是行终止符时,当前行号都会递增。
      覆盖:
      readLine 在类中 BufferedReader
      返回:
      包含行内容的字符串,不包括任何行终止符,如果已到达流的末尾则为null
      抛出:
      IOException - 如果发生I/O错误
      参见:
    • mark

      public void mark(int readAheadLimit) throws IOException
      标记流中的当前位置。随后调用reset()将尝试将流重新定位到此点,并适当重置行号。
      覆盖:
      mark 在类中 BufferedReader
      参数:
      readAheadLimit - 可读取的字符数限制,保留标记。读取此数量的字符后,尝试重置流可能失败。
      抛出:
      IOException - 如果发生I/O错误
    • reset

      public void reset() throws IOException
      将流重置为最近的标记。
      覆盖:
      reset 在类中 BufferedReader
      抛出:
      IOException - 如果流未被标记,或者标记已失效