模块  java.base
软件包  java.io

Class LineNumberInputStream

  • 实现的所有接口
    CloseableAutoCloseable

    @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
    另请参见:
    LineNumberReader
    • 构造方法详细信息

      • LineNumberInputStream

        public LineNumberInputStream​(InputStream in)
        Deprecated.
        构造一个换行符号输入流,从指定的输入流中读取其输入。
        参数
        in - 基础输入流。
    • 方法详细信息

      • read

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

        read的方法LineNumberInputStream调用read基础输入流的方法。 它检查输入中的回车符和换行符,并根据需要修改当前行号。 回车符或回车符后跟换行符都将转换为单个换行符。

        重写:
        readFilterInputStream
        结果
        数据的下一个字节,如果到达此流的末尾, -1
        异常
        IOException - 如果发生I / O错误。
        另请参见:
        FilterInputStream.ingetLineNumber()
      • read

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

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

        重写:
        readFilterInputStream
        参数
        b - 读取数据的缓冲区。
        off - 数据的起始偏移量。
        len - 读取的最大字节数。
        结果
        读入缓冲区的总字节数,如果没有更多数据, -1 ,因为已到达此流的末尾。
        异常
        IOException - 如果发生I / O错误。
        另请参见:
        read()
      • skip

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

        skip的方法LineNumberInputStream创建一个字节数组,然后重复读入,直到n字节已被读出或流的结尾已经到达。

        重写:
        skipFilterInputStream
        参数
        n - 要跳过的字节数。
        结果
        跳过的实际字节数。
        异常
        IOException - 如果发生I / O错误。
        另请参见:
        FilterInputStream.in
      • setLineNumber

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

        public int getLineNumber()
        Deprecated.
        返回当前行号。
        结果
        当前行号。
        另请参见:
        setLineNumber(int)
      • available

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

        请注意,如果基础输入流能够无阻塞地提供k个输入字符,则LineNumberInputStream可以保证仅提供k / 2个字符而不会阻塞,因为基础输入流中的k个字符可能包含k / 2对'\r''\n' ,转换为k / 2 '\n'字符。

        重写:
        available在类 FilterInputStream
        结果
        可以在不阻塞的情况下从此输入流中读取的字节数。
        异常
        IOException - 如果发生I / O错误。
        另请参见:
        FilterInputStream.in
      • mark

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

        mark的方法LineNumberInputStream记得在一个私有变量的当前行号,然后调用mark基础输入流的方法。

        重写:
        mark在类 FilterInputStream
        参数
        readlimit - 标记位置变为无效之前可读取的最大字节数限制。
        另请参见:
        FilterInputStream.inreset()
      • reset

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

        reset方法LineNumberInputStream将行号重置为调用mark方法时的行号,然后调用基础输入流的reset方法。

        流标记旨在用于需要提前阅读以查看流中的内容的情况。 通常,这通过调用一些通用解析器最容易完成。 如果流是解析器处理的类型,它只是愉快地开始。 如果流不是那种类型,解析器应该在失败时抛出异常,如果它发生在readlimit字节内,它允许外部代码重置流并尝试另一个解析器。

        重写:
        reset在类 FilterInputStream
        异常
        IOException - 如果发生I / O错误。
        另请参见:
        FilterInputStream.inmark(int)