返回介绍

java.io 类 LineNumberInputStream

发布于 2019-10-04 09:50:46 字数 9067 浏览 1030 评论 0 收藏 0

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

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

@Deprecated
public class LineNumberInputStream
extends FilterInputStream
 

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

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

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

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

字段摘要
从类 java.io.FilterInputStream 继承的字段
in
构造方法摘要
LineNumberInputStream(InputStreamin)

已过时。构造从指定输入流读取其输入的新行号输入流。

方法摘要
intavailable()

已过时。无阻塞情况下返回可以从此输入流中读取的字节数。

intgetLineNumber()

已过时。返回当前行号。

voidmark(intreadlimit)

已过时。在此输入流中标记当前的位置。

intread()

已过时。从此输入流读取下一个数据字节。

intread(byte[]b, intoff, intlen)

已过时。将最多 len 个数据字节从此输入流读入字节数组。

voidreset()

已过时。将此流重新定位到对此输入流最后调用 mark 方法时的位置。

voidsetLineNumber(intlineNumber)

已过时。将行号设置为指定参数。

longskip(longn)

已过时。跳过和放弃此输入流中的 n 个数据字节。

从类 java.io.FilterInputStream 继承的方法
close, markSupported, read
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

构造方法详细信息

LineNumberInputStream

public LineNumberInputStream(InputStreamin)
已过时。
构造从指定输入流读取其输入的新行号输入流。
参数:
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,
                intoff,
                intlen)
         throws IOException
已过时。
将最多 len 个数据字节从此输入流读入字节数组。在某个输入可用前,此方法一直阻塞。

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

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

skip

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

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

覆盖:
FilterInputStream 中的 skip
参数:
n - 要跳过的字节数。
返回:
跳过的实际字节数。
抛出:
IOException - 如果发生 I/O 错误。
另请参见:
FilterInputStream.in

setLineNumber

public void setLineNumber(intlineNumber)
已过时。
将行号设置为指定参数。
参数:
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(intreadlimit)
已过时。
在此输入流中标记当前的位置。对 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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文