@Deprecated public class LineNumberInputStream extends FilterInputStream
行是以回车符( '\r'
),换行字符( '\n'
)结尾的字节序列,或紧跟着换行字符的回车符。 在所有三种情况下,行终止字符都作为单个换行符返回。
行号开始于0
,和被增加1
当read
返回换行符。
LineNumberReader
in
Constructor and Description |
---|
LineNumberInputStream(InputStream in)
已弃用
构造从指定输入流读取其输入的换行符输入流。
|
Modifier and Type | Method and Description |
---|---|
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 字节的数据。
|
close, markSupported, read
public LineNumberInputStream(InputStream in)
in
- 底层输入流。
public int read() throws IOException
int
返回,范围为0
至255
。
如果没有字节可用,因为流已经到达,则返回值-1
。
该方法阻塞直到输入数据可用,检测到流的结尾,或抛出异常。
该read
的方法LineNumberInputStream
调用read
基础输入流的方法。 它检查输入中的回车符和换行符,并根据需要修改当前行号。 回车字符或回车符后跟换行符都将转换为单个换行符。
read
在类别
FilterInputStream
-1
。
IOException
- 如果发生I / O错误。
FilterInputStream.in
,
getLineNumber()
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()
public long skip(long n) throws IOException
n
字节数据。
由于各种原因, skip
方法可能会跳过一些较小数量的字节,可能是0
。
返回实际跳过的字节数。
如果n
为负,则不跳过字节。
该skip
的方法LineNumberInputStream
创建一个字节数组,然后重复读入,直到n
字节已被读出或流的结尾已经到达。
skip
在类别
FilterInputStream
n
- 要跳过的字节数。
IOException
- 如果发生I / O错误。
FilterInputStream.in
public void setLineNumber(int lineNumber)
lineNumber
- 新的行号。
getLineNumber()
public int getLineNumber()
setLineNumber(int)
public int available() throws IOException
请注意,如果基础输入流能够提供k个输入字符而不阻塞,那么LineNumberInputStream
可以保证仅提供k / 2个字符而不会阻塞,因为来自底层输入流的k个字符可能包含k / 2对的'\r'
和'\n'
,它们转换为只有k / 2 '\n'
字符。
available
在
FilterInputStream
IOException
- 如果发生I / O错误。
FilterInputStream.in
public void mark(int readlimit)
reset
方法的调用在最后一个标记的位置重新定位该流,以便后续读取重新读取相同的字节。
mark
方法LineNumberInputStream
私有变量中的当前行号,然后调用底层输入流的mark
方法。
mark
在
FilterInputStream
readlimit
- 标记位置无效之前可以读取的最大字节数限制。
FilterInputStream.in
,
reset()
public void reset() throws IOException
mark
方法时的位置。
该reset
的方法LineNumberInputStream
复位的行号是在该时间的行号mark
方法被调用,然后调用reset
基础输入流的方法。
流标记旨在用于您需要先阅读一下以查看流中的内容的情况。 通常这通过调用一些一般的解析器来最容易地完成。 如果流是由解析器处理的类型,那么它就可以快乐地拥抱。 如果流不是那种类型,解析器应该在失败时抛出一个异常,如果它在readlimit字节中发生,则允许外部代码重置流并尝试另一个解析器。
reset
在类别
FilterInputStream
IOException
- 如果发生I / O错误。
FilterInputStream.in
,
mark(int)