java.lang.Object
java.io.InputStream
java.io.FilterInputStream
java.io.LineNumberInputStream
- 所有已实现的接口:
-
Closeable
,AutoCloseable
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
- 参见:
-
Field Summary
Fields declared in class java.io.FilterInputStream
in
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionint
已弃用。返回可以从该输入流中读取而不阻塞的字节数。int
已弃用。返回当前行号。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 declared in class java.io.FilterInputStream
close, markSupported, read
Methods declared in class java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
-
Constructor Details
-
LineNumberInputStream
Deprecated.构造一个从指定输入流读取数据的行号输入流。- 参数:
-
in
- 底层输入流。
-
-
Method Details
-
read
Deprecated.从此输入流中读取下一个字节的数据。值字节作为一个int
在范围0
到255
内返回。如果没有字节可用,因为已到达流的末尾,则返回值-1
。此方法会阻塞,直到有输入数据可用、检测到流的末尾或抛出异常。LineNumberInputStream
的read
方法调用底层输入流的read
方法。它检查输入中的回车符和换行符,并根据需要修改当前行号。回车字符或回车后跟随换行字符都会被转换为单个换行字符。- 覆盖:
-
read
在类FilterInputStream
- 返回:
-
下一个数据字节,如果到达流的末尾则返回
-1
。 - 抛出:
-
IOException
- 如果发生I/O错误。 - 参见:
-
read
Deprecated.从此输入流中最多读取len
字节的数据到一个字节数组中。此方法会阻塞,直到有输入可用。LineNumberInputStream
的read
方法重复调用零参数的read
方法来填充字节数组。- 覆盖:
-
read
在类FilterInputStream
- 参数:
-
b
- 要读取数据的缓冲区。 -
off
- 数据的起始偏移量。 -
len
- 要读取的最大字节数。 - 返回:
-
读入缓冲区的总字节数,如果没有更多数据因为到达流的末尾则返回
-1
。 - 抛出:
-
IOException
- 如果发生I/O错误。 - 参见:
-
skip
Deprecated.跳过并丢弃此输入流中的n
字节数据。skip
方法可能由于各种原因而最终跳过一些较小数量的字节,可能为0
。返回实际跳过的字节数。如果n
为负数,则不会跳过任何字节。LineNumberInputStream
的skip
方法创建一个字节数组,然后重复读取直到读取了n
字节或到达流的末尾。- 覆盖:
-
skip
在类FilterInputStream
- 参数:
-
n
- 要跳过的字节数。 - 返回:
- 实际跳过的字节数。
- 抛出:
-
IOException
- 如果发生I/O错误。 - 参见:
-
setLineNumber
public void setLineNumber(int lineNumber) Deprecated.将行号设置为指定的参数。- 参数:
-
lineNumber
- 新的行号。 - 参见:
-
getLineNumber
public int getLineNumber()Deprecated.返回当前行号。- 返回:
- 当前行号。
- 参见:
-
available
Deprecated.返回可以从该输入流中读取而不阻塞的字节数。请注意,如果底层输入流能够提供k个输入字符而不阻塞,那么
LineNumberInputStream
只能保证提供k/2个字符而不阻塞,因为来自底层输入流的k个字符可能由k/2对'\r'
和'\n'
组成,这些字符会被转换为k/2个'\n'
字符。- 覆盖:
-
available
在类FilterInputStream
- 返回:
- 可以从该输入流中读取而不阻塞的字节数。
- 抛出:
-
IOException
- 如果发生I/O错误。 - 参见:
-
mark
public void mark(int readlimit) Deprecated.标记此输入流中的当前位置。随后调用reset
方法会将此流重新定位到最后标记的位置,以便后续读取重新读取相同的字节。LineNumberInputStream
的mark
方法会将当前行号记住在一个私有变量中,然后调用底层输入流的mark
方法。- 覆盖:
-
mark
在类FilterInputStream
- 参数:
-
readlimit
- 在标记位置变为无效之前可以读取的最大字节数。 - 参见:
-
reset
Deprecated.将此流重新定位到上次在此输入流上调用mark
方法时的位置。LineNumberInputStream
的reset
方法将行号重置为调用mark
方法时的行号,然后调用底层输入流的reset
方法。流标记旨在用于需要向前读取一点以查看流中内容的情况。通常,通过调用一些通用解析器最容易实现这一点。如果流是解析器处理的类型,它会继续正常运行。如果流不是该类型,则解析器在失败时应抛出异常,如果在readlimit字节内发生异常,则外部代码可以重置流并尝试另一个解析器。
- 覆盖:
-
reset
在类FilterInputStream
- 抛出:
-
IOException
- 如果发生I/O错误。 - 参见:
-