public class LineNumberInputStream
extends FilterInputStream
java.lang.Object | |||
↳ | java.io.InputStream | ||
↳ | java.io.FilterInputStream | ||
↳ | java.io.LineNumberInputStream |
此类已在API级别1中弃用。
该类错误地假定字节充分表示字符。 从JDK 1.1开始,操作字符流的首选方法是通过新的字符流类,其中包括用于计算行号的类。
这个类是一个输入流过滤器,提供追踪当前行号的附加功能。
一行是以一个回车符( '\r'
),一个换行符( '\n'
)或一个回车符紧跟一个换行符结尾的一系列字节。 在所有三种情况下,行终止字符作为单个换行符返回。
行号从 0
开始,并在 read
返回换行符时增加 1
。
也可以看看:
Inherited fields |
---|
From class java.io.FilterInputStream
|
Public constructors |
|
---|---|
LineNumberInputStream(InputStream in) 构造一个换行符输入流,从指定的输入流读取其输入。 |
Public methods |
|
---|---|
int |
available() 返回可以从该输入流中读取而不被阻塞的字节数。 |
int |
getLineNumber() 返回当前行号。 |
void |
mark(int readlimit) 标记此输入流中的当前位置。 |
int |
read() 从此输入流中读取下一个字节的数据。 |
int |
read(byte[] b, int off, int len) 从这个输入流中最多读取 |
void |
reset() 将此流重新定位到上次在此输入流上调用 |
void |
setLineNumber(int lineNumber) 将行号设置为指定的参数。 |
long |
skip(long n) 跳过并丢弃来自此输入流的 |
Inherited methods |
|
---|---|
From class java.io.FilterInputStream
|
|
From class java.io.InputStream
|
|
From class java.lang.Object
|
|
From interface java.io.Closeable
|
|
From interface java.lang.AutoCloseable
|
LineNumberInputStream (InputStream in)
构造一个换行符输入流,从指定的输入流读取其输入。
Parameters | |
---|---|
in |
InputStream : the underlying input stream. |
int available ()
返回可以从该输入流中读取而不被阻塞的字节数。
请注意,如果底层输入流能够不阻塞地提供 k个输入字符,则 LineNumberInputStream
可以保证只提供 k / 2个字符而不会阻塞,因为来自底层输入流的 k个字符可能由 k / 2对 '\r'
和 '\n'
,它们被转换成只有 k / 2个 '\n'
字符。
Returns | |
---|---|
int |
the number of bytes that can be read from this input stream without blocking. |
Throws | |
---|---|
IOException |
if an I/O error occurs. |
也可以看看:
int getLineNumber ()
返回当前行号。
Returns | |
---|---|
int |
the current line number. |
也可以看看:
void mark (int readlimit)
标记此输入流中的当前位置。 随后调用reset
方法将此流重新定位到最后标记的位置,以便后续读取重新读取相同的字节。
mark
方法 LineNumberInputStream
记住私有变量中的当前行号,然后调用基础输入流的 mark
方法。
Parameters | |
---|---|
readlimit |
int : the maximum limit of bytes that can be read before the mark position becomes invalid. |
int read ()
从此输入流中读取下一个字节的数据。 值字节被返回作为int
范围0
到255
。 如果由于流的末尾已到达而没有可用字节,则返回值-1
。 此方法阻塞直到输入数据可用,流的末尾被检测到,或抛出异常。
read
方法LineNumberInputStream
调用底层输入流的read
方法。 它检查输入中的回车符和换行符,并根据需要修改当前行号。 一个回车符或一个回车符后跟一个换行符都被转换成一个换行符。
Returns | |
---|---|
int |
the next byte of data, or -1 if the end of this stream is reached. |
Throws | |
---|---|
IOException |
if an I/O error occurs. |
也可以看看:
int read (byte[] b, int off, int len)
最多可将len
字节的数据从此输入流转换为字节数组。 此方法阻塞,直到有些输入可用。
该 read
的方法 LineNumberInputStream
反复调用 read
的零个参数方法来填充字节数组英寸
Parameters | |
---|---|
b |
byte : the buffer into which the data is read. |
off |
int : the start offset of the data. |
len |
int : the maximum number of bytes read. |
Returns | |
---|---|
int |
the total number of bytes read into the buffer, or -1 if there is no more data because the end of this stream has been reached. |
Throws | |
---|---|
IOException |
if an I/O error occurs. |
也可以看看:
void reset ()
将此流重新定位到上次在此输入流上调用 mark
方法时的位置。
该 reset
的方法 LineNumberInputStream
复位的行号是在该时间的行号 mark
方法被调用,然后调用 reset
基础输入流的方法。
流标记旨在用于需要稍微阅读以查看流中内容的情况。 这通常通过调用一些通用解析器来完成。 如果流属于解析器处理的类型,它就会快乐地跳出来。 如果流不是这种类型,那么解析器在失败时应抛出异常,如果它发生在readlimit字节内,则允许外部代码重置流并尝试另一个解析器。
Throws | |
---|---|
IOException |
if an I/O error occurs. |
void setLineNumber (int lineNumber)
将行号设置为指定的参数。
Parameters | |
---|---|
lineNumber |
int : the new line number. |
也可以看看:
long skip (long n)
跳过并丢弃来自此输入流的n
个字节的数据。 由于各种原因, skip
方法可能跳过一些较小数量的字节,可能是0
。 返回跳过的实际字节数。 如果n
为负数,则不跳过字节。
该 skip
的方法 LineNumberInputStream
创建一个字节数组,然后重复读入,直到 n
字节已被读出或流的结尾已经到达。
Parameters | |
---|---|
n |
long : the number of bytes to be skipped. |
Returns | |
---|---|
long |
the actual number of bytes skipped. |
Throws | |
---|---|
IOException |
if an I/O error occurs. |
也可以看看: