- java.lang.Object
-
- java.io.InputStream
-
- java.io.FilterInputStream
-
- java.io.LineNumberInputStream
-
- All Implemented Interfaces:
-
Closeable
,AutoCloseable
已过时。该类错误地假定字节充分表示字符。 从JDK 1.1开始,对字符流进行操作的首选方式是通过新的字符流类,其中包括一个用于计数行号的类。
@Deprecated public class LineNumberInputStream extends FilterInputStream
这个类是一个输入流过滤器,它提供跟踪当前行号的附加功能。行是以回车符(
'\r'
),换行字符('\n'
)结尾的字节序列,或紧跟着换行字符的回车符。 在所有三种情况下,行终止字符都作为单个换行符返回。行数从
0
开始,当一个read
返回一个换行符时,它增加了1
。- 从以下版本开始:
- 1.0
- 另请参见:
-
LineNumberReader
-
-
Field Summary
-
Fields inherited from class java.io.FilterInputStream
in
-
-
构造方法摘要
构造方法 Constructor 描述 LineNumberInputStream(InputStream in)
已过时。构造从指定输入流读取其输入的换行符输入流。
-
方法摘要
所有方法 接口方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 int
available()
已过时。返回可以从该输入流读取而不阻塞的字节数。int
getLineNumber()
已过时。返回当前行号。void
mark(int readlimit)
已过时。标记此输入流中的当前位置。int
read()
已过时。从该输入流读取下一个数据字节。int
read(byte[] b, int off, int len)
已过时。从该输入流读取最多len
个字节的数据到字节数组。void
reset()
已过时。将此流重新定位到最后在此输入流上调用mark
方法时的位置。void
setLineNumber(int lineNumber)
已过时。将行号设置为指定的参数。long
skip(long n)
已过时。跳过并丢弃来自该输入流的n
字节的数据。-
Methods inherited from class java.io.FilterInputStream
close, markSupported, read
-
Methods inherited from class java.io.InputStream
readAllBytes, readNBytes, transferTo
-
-
-
-
构造方法详细信息
-
LineNumberInputStream
public LineNumberInputStream(InputStream in)
已过时。构造从指定输入流读取其输入的换行符输入流。- 参数
-
in
- 底层输入流。
-
-
方法详细信息
-
read
public int read() throws IOException
已过时。从该输入流读取下一个数据字节。 值字节作为int
返回到0
到255
。 如果没有字节可用,因为已经到达流的末尾,则返回值-1
。 该方法阻塞直到输入数据可用,检测到流的结尾,或抛出异常。该
read
的方法LineNumberInputStream
调用read
基础输入流的方法。 它检查输入中的回车符和换行符,并根据需要修改当前行号。 回车字符或回车符后跟换行符都将转换为单个换行符。- 重写:
-
read
在FilterInputStream
- 结果
-
数据的下一个字节,如果达到此流的末尾,
-1
。 - 异常
-
IOException
- 如果发生I / O错误。 - 另请参见:
-
FilterInputStream.in
,getLineNumber()
-
read
public int read(byte[] b, int off, int len) throws IOException
已过时。从该输入流读取最多len
个字节的数据到一个字节数组。 此方法将阻塞,直到某些输入可用。该
read
的方法LineNumberInputStream
反复调用read
的零个参数方法来填充字节数组英寸- 重写:
-
read
在FilterInputStream
- 参数
-
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'
字符。- 重写:
-
available
在FilterInputStream
- 结果
- 可以从此输入流中读取而不阻塞的字节数。
- 异常
-
IOException
- 如果发生I / O错误。 - 另请参见:
-
FilterInputStream.in
-
mark
public void mark(int readlimit)
已过时。标记此输入流中的当前位置。 对reset
方法的后续调用会将该流重新定位在最后一个标记的位置,以便后续读取重新读取相同的字节。该
mark
的方法LineNumberInputStream
记得在一个私有变量的当前行号,然后调用mark
基础输入流的方法。- 重写:
-
mark
在FilterInputStream
- 参数
-
readlimit
- 标记位置无效之前可以读取的最大字节数。 - 另请参见:
-
FilterInputStream.in
,reset()
-
reset
public void reset() throws IOException
已过时。将此流重新定位到最后在此输入流上调用mark
方法时的位置。该
reset
的方法LineNumberInputStream
复位的行号是在该时间的行号mark
方法被调用,然后调用reset
基础输入流的方法。流标记旨在用于您需要先阅读一下以查看流中的内容的情况。 通常这通过调用一些一般的解析器来最容易地完成。 如果流是由解析器处理的类型,那么它就可以快乐地拥抱。 如果流不是那种类型,解析器应该在失败时抛出一个异常,如果它在readlimit字节中发生,则允许外部代码重置流并尝试另一个解析器。
- 重写:
-
reset
在FilterInputStream
- 异常
-
IOException
- 如果发生I / O错误。 - 另请参见:
-
FilterInputStream.in
,mark(int)
-
-