Module java.base
Package java.io

Class LineNumberInputStream

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

@Deprecated public class LineNumberInputStream extends FilterInputStream
Deprecated.
This class incorrectly assumes that bytes adequately represent characters. As of JDK 1.1, the preferred way to operate on character streams is via the new character-stream classes, which include a class for counting line numbers.
这个类是一个输入流过滤器,提供了跟踪当前行号的附加功能。

一行是以回车字符('\r')、换行字符('\n')或者紧接着回车字符后面跟着换行字符结束的字节序列。在这三种情况下,行终止字符会作为单个换行字符返回。

行号从0开始,当一个read返回一个换行字符时,行号会增加1

自从:
1.0
参见:
  • Constructor Details

    • LineNumberInputStream

      public LineNumberInputStream(InputStream in)
      Deprecated.
      构造一个从指定输入流读取数据的行号输入流。
      参数:
      in - 底层输入流。
  • Method Details

    • read

      public int read() throws IOException
      Deprecated.
      从此输入流中读取下一个字节的数据。值字节作为一个int在范围0255内返回。如果没有字节可用,因为已到达流的末尾,则返回值-1。此方法会阻塞,直到有输入数据可用、检测到流的末尾或抛出异常。

      LineNumberInputStreamread方法调用底层输入流的read方法。它检查输入中的回车符和换行符,并根据需要修改当前行号。回车字符或回车后跟随换行字符都会被转换为单个换行字符。

      覆盖:
      read 在类 FilterInputStream
      返回:
      下一个数据字节,如果到达流的末尾则返回-1
      抛出:
      IOException - 如果发生I/O错误。
      参见:
    • read

      public int read(byte[] b, int off, int len) throws IOException
      Deprecated.
      从此输入流中最多读取len字节的数据到一个字节数组中。此方法会阻塞,直到有输入可用。

      LineNumberInputStreamread方法重复调用零参数的read方法来填充字节数组。

      覆盖:
      read 在类 FilterInputStream
      参数:
      b - 要读取数据的缓冲区。
      off - 数据的起始偏移量。
      len - 要读取的最大字节数。
      返回:
      读入缓冲区的总字节数,如果没有更多数据因为到达流的末尾则返回-1
      抛出:
      IOException - 如果发生I/O错误。
      参见:
    • skip

      public long skip(long n) throws IOException
      Deprecated.
      跳过并丢弃此输入流中的n字节数据。 skip方法可能由于各种原因而最终跳过一些较小数量的字节,可能为0。返回实际跳过的字节数。如果n为负数,则不会跳过任何字节。

      LineNumberInputStreamskip方法创建一个字节数组,然后重复读取直到读取了n字节或到达流的末尾。

      覆盖:
      skip 在类 FilterInputStream
      参数:
      n - 要跳过的字节数。
      返回:
      实际跳过的字节数。
      抛出:
      IOException - 如果发生I/O错误。
      参见:
    • setLineNumber

      public void setLineNumber(int lineNumber)
      Deprecated.
      将行号设置为指定的参数。
      参数:
      lineNumber - 新的行号。
      参见:
    • getLineNumber

      public int getLineNumber()
      Deprecated.
      返回当前行号。
      返回:
      当前行号。
      参见:
    • available

      public int available() throws IOException
      Deprecated.
      返回可以从该输入流中读取而不阻塞的字节数。

      请注意,如果底层输入流能够提供k个输入字符而不阻塞,那么LineNumberInputStream只能保证提供k/2个字符而不阻塞,因为来自底层输入流的k个字符可能由k/2对'\r''\n'组成,这些字符会被转换为k/2个'\n'字符。

      覆盖:
      available 在类 FilterInputStream
      返回:
      可以从该输入流中读取而不阻塞的字节数。
      抛出:
      IOException - 如果发生I/O错误。
      参见:
    • mark

      public void mark(int readlimit)
      Deprecated.
      标记此输入流中的当前位置。随后调用reset方法会将此流重新定位到最后标记的位置,以便后续读取重新读取相同的字节。

      LineNumberInputStreammark方法会将当前行号记住在一个私有变量中,然后调用底层输入流的mark方法。

      覆盖:
      mark 在类 FilterInputStream
      参数:
      readlimit - 在标记位置变为无效之前可以读取的最大字节数。
      参见:
    • reset

      public void reset() throws IOException
      Deprecated.
      将此流重新定位到上次在此输入流上调用mark方法时的位置。

      LineNumberInputStreamreset方法将行号重置为调用mark方法时的行号,然后调用底层输入流的reset方法。

      流标记旨在用于需要向前读取一点以查看流中内容的情况。通常,通过调用一些通用解析器最容易实现这一点。如果流是解析器处理的类型,它会继续正常运行。如果流不是该类型,则解析器在失败时应抛出异常,如果在readlimit字节内发生异常,则外部代码可以重置流并尝试另一个解析器。

      覆盖:
      reset 在类 FilterInputStream
      抛出:
      IOException - 如果发生I/O错误。
      参见: