当前位置 类层次(JDK) 所有类(JDK) 所有域和方法(JDK)

类 java.io.LineNumberInputStream

java.lang.Object
   |
   +----java.io.InputStream
           |
           +----java.io.FilterInputStream
                   |
                   +----java.io.LineNumberInputStream

public class LineNumberInputStream
extends FilterInputStream

注释:不推荐使用 LineNumberInputStream 类。 这个类假定字节表示字符。同 JDK 1.1 版中的类似,字符流操作的最佳方法是使用新的字符流类,包括计算行号的类。

这个类是一个输入流过滤器,它提供跟踪当前行号的附加功能。

一个行是一个字符序列,以回车符('\r') 、换行符 ('\n')或跟随一个换行符的回车符结束。 在所有这三种情况下,行结束符都作为一个单新行符返回。

行号开始于0, 且当read 返回一个换行符时增 1

来自:
JDK1.0
参见:
LineNumberReader

构造子索引

LineNumberInputStream(InputStream)
构造一个新行号输入流,从指定输入流读取输入。

方法索引

available()
返回从当前输入流中可无阻塞读取的字节数。
getLineNumber()
返回当前行号。
mark(int)
在该输入流中标记当前位置。
read()
从当前输入流中读取数据的下一个字节。
read(byte[], int, int)
将输入流中 len 个字节数据读入一个字节数组中。
reset()
将该输入流重新定位到上一次调用 mark 方法时所标记的位置。
setLineNumber(int)
设置行号为指定参数。
skip(long)
跳过并放弃输入流的 n 字节数据。

构造子

LineNumberInputStream
 public LineNumberInputStream(InputStream in)
构造一个新行号输入流,从指定输入流读取输入。

参数:
in - 基本的输入流。

方法

read
 public int read() throws IOException
从当前输入流中读取数据的下一个字节。 返回的字节值是在 0255 范围内的一个 int 数。如果已读到流的末尾,没有再可读的字节时,则返回 -1。 该方法将一直阻塞,直到有输入数据、检测到了数据流尾或抛出异常。

LineNumberInputStreamread 方法,用三个参数 stream, 0b.length 调用具有三个参数的 read 方法。 它检查输入中的回车符和换行符,将当前行号修改为正确的。回车符和跟随一个换行符的回车符都被转换为一个单一换行符。

返回值:
数据的下一个字节;若已读到流尾则为 -1
抛出: IOException
如果发生某个 I/O 错误。
覆盖:
FilterInputStream 中的 read
参见:
in, getLineNumber
read
 public int read(byte b[],
                   int off,
                 int len) throws IOException
将输入流中 len 个字节数据读入一个字节数组中。 这个方法将阻塞直到有输入数据可用。

LineNumberInputStreamread 方法,重复调用无参数的 read 方法来添充此字节数组。

参数:
b - 读取数据的缓冲区。
off - 读取数据的起始偏移。
len - 读取的最大字节数。
返回值:
读到缓存区的整个字节数;如果读到流尾不再有数据可读则为 -1
抛出: IOException
如果发生某个 I/O 错误。
覆盖:
FilterInputStream 中的 read
参见:
read
setLineNumber
 public void setLineNumber(int lineNumber)
设置行号为指定参数。

参数:
lineNumber - 新行号。
getLineNumber
 public int getLineNumber()
返回当前行号。

返回值:
当前行号。
skip
 public long skip(long n) throws IOException
跳过并放弃输入流的 n 字节数据。 skip 方法可能因各种原因终止跳过一些较小的字节数(可能是零)。返回实际跳过的字节数。

LineNumberInputStreamskip 方法创建一个长度为 n 的数组,然后将数据读入此数组,直到读了n 个字节的数据,或已到达了此流末尾。

参数:
n - 跳过的字节数。
返回值:
实际跳过的字节数。
抛出: IOException
如果发生某个 I/O 错误。
覆盖:
FilterInputStream 中的 skip
available
 public int available() throws IOException
返回从当前输入流中可无阻塞读取的字节数。

注意如果基本输入流能支持无阻塞读取 k 个输入字符,那么 LineNumberInputStream 仅能保证支持无阻塞读取 k/2 个字符,因为基本输入流中的 k 个字符可能由 k/2 对'\r''\n' 组成, 而它们正好被转换为 k/2 '\n' 个字符。

返回值:
从当前输入流中可无阻塞读取的字节数。
抛出: IOException
如果发生某个 I/O 错误。
覆盖:
FilterInputStream 中的 available
参见:
in
mark
 public void mark(int readlimit)
在该输入流中标记当前位置。 后续调用 reset 方法重新将流定位于最后标记位置,以便后续读取能重新读取相同字节。

LineNumberInputStreammark 方法用正确的变量记载当前行,然后调用基本输入流的 mark 方法。

参数:
readlimit - 标记位置变为无效前能读取的最大字节数。
覆盖:
FilterInputStream 中的 mark
参见:
in, reset
reset
 public void reset() throws IOException
将该输入流重新定位到上一次调用 mark 方法时所标记的位置。

LineNumberInputStreamreset 方法将行号复位成调用 mark 时的行号,然后调用基本输入流的 reset 方法。

当读取前需要先读少许以查看流内容时,可以使用流标记。 通过调用一些通用的语法分析器来实现这个功能是最容易的。若该流是语法分析器处理的类型,则正常通过。否则失败时语法分析器应抛出异常,如果这发生在 readlimit 个字节内,则允许外部代码复位该流且尝试使用另一个语法分析器。

抛出: IOException
如果发生某个 I/O 错误。
覆盖:
FilterInputStream 中的 reset
参见:
in, mark

当前位置 类层次(JDK) 所有类(JDK) 所有域和方法(JDK)