Module  java.base
软件包  java.io

Class LineNumberInputStream

  • All Implemented Interfaces:
    CloseableAutoCloseable

    已过时。
    该类错误地假定字节充分表示字符。 从JDK 1.1开始,对字符流进行操作的首选方式是通过新的字符流类,其中包括一个用于计数行号的类。

    @Deprecated
    public class LineNumberInputStream
    extends FilterInputStream
    这个类是一个输入流过滤器,它提供跟踪当前行号的附加功能。

    行是以回车符( '\r' ),换行字符( '\n' )结尾的字节序列,或紧跟着换行字符的回车符。 在所有三种情况下,行终止字符都作为单个换行符返回。

    行数从0开始,当一个read返回一个换行符时,它增加了1

    从以下版本开始:
    1.0
    另请参见:
    LineNumberReader
    • 构造方法详细信息

      • LineNumberInputStream

        public LineNumberInputStream​(InputStream in)
        已过时。
        构造从指定输入流读取其输入的换行符输入流。
        参数
        in - 底层输入流。
    • 方法详细信息

      • read

        public int read​()
                 throws IOException
        已过时。
        从该输入流读取下一个数据字节。 值字节作为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
        已过时。
        从该输入流读取最多len个字节的数据到一个字节数组。 此方法将阻塞,直到某些输入可用。

        read的方法LineNumberInputStream反复调用read的零个参数方法来填充字节数组英寸

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

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

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

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

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

        public int getLineNumber​()
        已过时。
        返回当前行号。
        结果
        当前行号。
        另请参见:
        setLineNumber(int)
      • available

        public int available​()
                      throws IOException
        已过时。
        返回可以从该输入流读取而不阻塞的字节数。

        请注意,如果底层输入流能够不阻塞地提供k个输入字符,那么LineNumberInputStream可以保证仅提供k / 2个字符而不会阻塞,因为来自底层输入流的k个字符可能包含k / 2对'\r''\n' ,它们转换为只有k / 2的'\n'字符。

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

        public void mark​(int readlimit)
        已过时。
        标记此输入流中的当前位置。 reset方法的后续调用会将该流重新定位在最后一个标记的位置,以便后续读取重新读取相同的字节。

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

        重写:
        markFilterInputStream
        参数
        readlimit - 标记位置无效之前可以读取的最大字节数。
        另请参见:
        FilterInputStream.inreset()
      • reset

        public void reset​()
                   throws IOException
        已过时。
        将此流重新定位到最后在此输入流上调用mark方法时的位置。

        reset的方法LineNumberInputStream复位的行号是在该时间的行号mark方法被调用,然后调用reset基础输入流的方法。

        流标记旨在用于您需要先阅读一下以查看流中的内容的情况。 通常这通过调用一些一般的解析器来最容易地完成。 如果流是由解析器处理的类型,那么它就可以快乐地拥抱。 如果流不是那种类型,解析器应该在失败时抛出一个异常,如果它在readlimit字节中发生,则允许外部代码重置流并尝试另一个解析器。

        重写:
        resetFilterInputStream
        异常
        IOException - 如果发生I / O错误。
        另请参见:
        FilterInputStream.in, mark(int)