JavaTM Platform
Standard Ed. 6

java.io
类 LineNumberInputStream

java.lang.Object
  继承者 java.io.InputStream
      继承者 java.io.FilterInputStream
          继承者 java.io.LineNumberInputStream
所有已实现的接口:
Closeable

已过时。 此类错误假定字节能充分表示字符。从 JDK 1.1 开始,对字符流操作的首选方法是通过新字符流类(其中包括计算行号的类)进行操作。

@Deprecated
public class LineNumberInputStream
extends FilterInputStream

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

行是以回车符 ('\r')、换行符 ('\n') 或回车符后面紧跟换行符结尾的字节序列。在所有这三种情况下,都以单个换行符形式返回行终止字符。

行号以 0 开头,并在 read 返回换行符时递增 1

从以下版本开始:
JDK1.0
另请参见:
LineNumberReader

字段摘要
 
从类 java.io.FilterInputStream 继承的字段
in
 
构造方法摘要
LineNumberInputStream(InputStream in)
          已过时。 构造从指定输入流读取其输入的新行号输入流。
 
方法摘要
 int available()
          已过时。 无阻塞情况下返回可以从此输入流中读取的字节数。
 int getLineNumber()
          已过时。 返回当前行号。
 void mark(int readlimit)
          已过时。 在此输入流中标记当前的位置。
 int read()
          已过时。 从此输入流读取下一个数据字节。
 int read(byte[] b, int off, int len)
          已过时。 将最多 len 个数据字节从此输入流读入 byte 数组。
 void reset()
          已过时。 将此流重新定位到对此输入流最后调用 mark 方法时的位置。
 void setLineNumber(int lineNumber)
          已过时。 将行号设置为指定参数。
 long skip(long n)
          已过时。 跳过和放弃此输入流中的 n 个数据字节。
 
从类 java.io.FilterInputStream 继承的方法
close, markSupported, read
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

LineNumberInputStream

public LineNumberInputStream(InputStream in)
已过时。 
构造从指定输入流读取其输入的新行号输入流。

参数:
in - 基础输入流。
方法详细信息

read

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

LineNumberInputStreamread 方法调用基础输入流的 read 方法。它检查输入中的回车和换行符,并相应地修改当前行号。回车符或后跟换行符的回车两者都可转换为单个换行符。

覆盖:
FilterInputStream 中的 read
返回:
下一个数据字节,如果已到达此流的末尾,则返回 -1
抛出:
IOException - 如果发生 I/O 错误。
另请参见:
FilterInputStream.in, getLineNumber()

read

public int read(byte[] b,
                int off,
                int len)
         throws IOException
已过时。 
将最多 len 个数据字节从此输入流读入 byte 数组。在某个输入可用前,此方法一直阻塞。

LineNumberInputStreamread 方法重复调用 0 参数的 read 方法来填充 byte 数组。

覆盖:
FilterInputStream 中的 read
参数:
b - 读入数据的缓冲区。
off - 数据的初始偏移量。
len - 读取的最大字节数。
返回:
读入缓冲区的总字节数,如果由于已到达此流的末尾而不再有数据,则返回 -1
抛出:
IOException - 如果发生 I/O 错误。
另请参见:
read()

skip

public long skip(long n)
          throws IOException
已过时。 
跳过和放弃此输入流中的 n 个数据字节。出于各种原因,该 skip 方法跳过某些较小的字节数(可能是 0)后结束。返回跳过的实际字节数。如果 n 为负,则不跳过任何字节。

LineNumberInputStreamskip 方法创建 byte 数组,然后重复向其读入,直到读够 n 个字节或已到达流的末尾为止。

覆盖:
FilterInputStream 中的 skip
参数:
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' 个字符。

覆盖:
FilterInputStream 中的 available
返回:
无阻塞情况下可以从此输入流读取的字节数。
抛出:
IOException - 如果发生 I/O 错误。
另请参见:
FilterInputStream.in

mark

public void mark(int readlimit)
已过时。 
在此输入流中标记当前的位置。对 reset 方法的后续调用会在最后标记的位置重新定位此流,以使后续读取重新读取相同的字节。

LineNumberInputStreammark 方法会记住 private 变量中的当前行号,然后调用基础输入流的 mark 方法。

覆盖:
FilterInputStream 中的 mark
参数:
readlimit - 在标记位置失效前可以读取字节的最大限制。
另请参见:
FilterInputStream.in, reset()

reset

public void reset()
           throws IOException
已过时。 
将此流重新定位到对此输入流最后调用 mark 方法时的位置。

LineNumberInputStreamreset 方法会重新将行号设置为调用 mark 方法时的行号,然后调用基础输入流的 reset 方法。

在需要提前从流中读取少量数据以查看流内容的情况下,可以使用流标记。通常,调用某些常规解析器可以非常方便地完成这项工作。如果流属于解析器处理的类型,则会非常顺利地完成。如果流不属于该类型,则解析器应该在其失败时抛出异常,如果这是在 readlimit 字节内发生的,它将允许使用外部代码重新设置该流并尝试其他解析器。

覆盖:
FilterInputStream 中的 reset
抛出:
IOException - 如果发生 I/O 错误。
另请参见:
FilterInputStream.in, mark(int)

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策