树叶云鸿蒙OS教程:鸿蒙OS PushbackInputStream

PushbackInputStream

java.lang.Object

|—java.io.InputStream

|—|—java.io.FilterInputStream

|—|—|—java.io.PushbackInputStream

public class PushbackInputStream
extends FilterInputStream

PushbackInputStream 将功能添加到另一个输入流,即“推回”或“未读”一个字节的能力。 这在代码片段可以方便地读取由特定字节值分隔的不确定数量的数据字节的情况下很有用; 读取终止字节后,代码片段可以“取消读取”它,以便对输入流的下一次读取操作将重新读取被推回的字节。 例如,表示构成标识符的字符的字节可能会以表示运算符字符的字节结尾; 一个只读取标识符的方法可以读取,直到它看到运算符,然后将运算符推回以重新读取。

Since:

JDK1.0

字段摘要

修饰符和类型字段描述
protected byte[]buf推回缓冲区。
protected intpos将读取下一个字节的回推缓冲区中的位置。
从类 java.io.FilterInputStream 继承的字段
in

构造函数摘要

构造函数描述
PushbackInputStream(InputStream in)创建一个 PushbackInputStream 并保存其参数,即输入流,以供以后使用。
PushbackInputStream(InputStream in, int size)创建具有指定大小的推回缓冲区的 PushbackInputStream,并保存其参数,即输入流,以供以后使用。

方法总结

修饰符和类型方法描述
intavailable()返回可以从此输入流中读取(或跳过)的字节数的估计值,而不会被下一次调用此输入流的方法阻塞。
voidclose()关闭此输入流并释放与该流关联的所有系统资源。
voidmark(int readlimit)标记此输入流中的当前位置。
booleanmarkSupported()测试此输入流是否支持 mark 和 reset 方法,但它不支持。
intread()从此输入流中读取数据的下一个字节。
intread(byte[] b, int off, int len)从此输入流中读取最多 len 个字节的数据到一个字节数组中。
voidreset()将此流重新定位到最后一次在此输入流上调用标记方法时的位置。
longskip(long n)跳过并丢弃此输入流中的 n 字节数据。
voidunread(byte[] b)通过将字节数组复制到推回缓冲区的前面来推回它。
voidunread(byte[] b, int off, int len)通过将字节数组的一部分复制到推回缓冲区的前面来推回它。
voidunread(int b)通过将字节复制到推回缓冲区的前面来推回一个字节。
从类 java.io.FilterInputStream 继承的方法
read
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

字段详细信息

buf

protected byte[] buf

推回缓冲区。

Since:

JDK1.1

pos

protected int pos

将读取下一个字节的回推缓冲区中的位置。 当缓冲区为空时,pos等于buf.length; 当缓冲区已满时,pos 等于 0。

Since:

JDK1.1

构造函数详细信息

PushbackInputStream

public PushbackInputStream(InputStream in, int size)

创建具有指定大小的推回缓冲区的 PushbackInputStream,并保存其参数,即输入流,以供以后使用。 最初,没有回推字节(字段 pushBack 初始化为 -1)。

参数:

参数名称参数描述
in将从中读取字节的输入流。
size推回缓冲区的大小。

Throws:

Throw名称Throw描述
IllegalArgumentException如果 size <= 0

Since:

JDK1.1

PushbackInputStream

public PushbackInputStream(InputStream in)

创建一个 PushbackInputStream 并保存其参数,即输入流,以供以后使用。 最初,没有回推字节(字段 pushBack 初始化为 -1)。

参数:

参数名称参数描述
in将从中读取字节的输入流。

方法详情

read

public int read() throws IOException

从此输入流中读取数据的下一个字节。 值字节作为 int 返回,范围为 0 到 255。如果由于到达流的末尾而没有可用的字节,则返回值 -1。 此方法会一直阻塞,直到输入数据可用、检测到流结束或引发异常。

此方法返回最近推回的字节(如果有),否则调用其底层输入流的 read 方法并返回该方法返回的任何值。

覆盖:

读入类 FilterInputStream

返回:

数据的下一个字节,如果已到达流的末尾,则为 -1。

Throws:

Throw名称Throw描述
IOException如果此输入流已通过调用其 close() 方法关闭,或者发生 I/O 错误。

read

public int read(byte[] b, int off, int len) throws IOException

从此输入流中读取最多 len 个字节的数据到一个字节数组中。 此方法首先读取任何推回的字节; 之后,如果读取的字节数少于 len,则从底层输入流中读取。 如果 len 不为零,则该方法会阻塞,直到至少有 1 个字节的输入可用; 否则,不读取任何字节并返回 0。

覆盖:

读入类 FilterInputStream

参数:

参数名称参数描述
b读取数据的缓冲区。
off目标数组 b 中的起始偏移量
len读取的最大字节数。

返回:

读入缓冲区的总字节数,如果由于到达流的末尾而没有更多数据,则为 -1。

Throws:

Throw名称Throw描述
NullPointerException如果 b 为空。
IndexOutOfBoundsException如果 off 为负数,len 为负数,或者 len 大于 b.length – off
IOException如果此输入流已通过调用其 close() 方法关闭,或者发生 I/O 错误。

unread

public void unread(int b) throws IOException

通过将字节复制到推回缓冲区的前面来推回一个字节。 此方法返回后,下一个要读取的字节将具有值 (byte)b。

参数:

参数名称参数描述
b低位字节要被推回的 int 值。

Throws:

Throw名称Throw描述
IOException如果回推缓冲区中没有足够的空间用于字节,或者此输入流已通过调用其 close() 方法关闭。

unread

public void unread(byte[] b, int off, int len) throws IOException

通过将字节数组的一部分复制到推回缓冲区的前面来推回它。 此方法返回后,要读取的下一个字节将具有值 b[off],之后的字节将具有值 b[off+1],依此类推。

参数:

参数名称参数描述
b要推回的字节数组。
off数据的起始偏移量。
len要推回的字节数。

Throws:

Throw名称Throw描述
IOException如果推回缓冲区中没有足够空间容纳指定的字节数,或者此输入流已通过调用其 close() 方法关闭。

Since:

JDK1.1

unread

public void unread(byte[] b) throws IOException

通过将字节数组复制到推回缓冲区的前面来推回它。 此方法返回后,要读取的下一个字节将具有值 b[0],之后的字节将具有值 b[1],依此类推。

参数:

参数名称参数描述
b要推回的字节数组

Throws:

Throw名称Throw描述
IOException如果推回缓冲区中没有足够空间容纳指定的字节数,或者此输入流已通过调用其 close() 方法关闭。

Since:

JDK1.1

available

public int available() throws IOException

返回可以从此输入流中读取(或跳过)的字节数的估计值,而不会被下一次调用此输入流的方法阻塞。 下一次调用可能是同一个线程或另一个线程。 单次读取或跳过这么多字节不会阻塞,但可能会读取或跳过更少的字节。

该方法返回已被推回的字节数和available返回的值之和。

覆盖:

在类 FilterInputStream 中可用

返回:

可以从输入流中读取(或跳过)而不阻塞的字节数。

Throws:

Throw名称Throw描述
IOException如果此输入流已通过调用其 close() 方法关闭,或者发生 I/O 错误。

skip

public long skip(long n) throws IOException

跳过并丢弃此输入流中的 n 字节数据。 由于各种原因,skip 方法最终可能会跳过一些较小的字节数,可能为零。 如果 n 为负数,则不跳过任何字节。

PushbackInputStream 的 skip 方法首先跳过 pushback 缓冲区中的字节(如果有)。 然后,如果需要跳过更多字节,它会调用底层输入流的 skip 方法。 返回实际跳过的字节数。

覆盖:

跳过类 FilterInputStream

参数:

参数名称参数描述
n要跳过的字节数。

返回:

跳过的实际字节数。

Throws:

Throw名称Throw描述
IOException如果流不支持查找,或者流已通过调用其 close() 方法关闭,或者发生 I/O 错误。

Since:

1.2

markSupported

public boolean markSupported()

测试此输入流是否支持 mark 和 reset 方法,但它不支持。

覆盖:

类 FilterInputStream 中的 markSupported

返回:

false,因为此类不支持 mark 和 reset 方法。

mark

public void mark(int readlimit)

标记此输入流中的当前位置。

PushbackInputStream 的 mark 方法什么都不做。

覆盖:

在类 FilterInputStream 中标记

参数:

参数名称参数描述
readlimit在标记位置无效之前可以读取的最大字节数。

reset

public void reset() throws IOException

将此流重新定位到最后一次在此输入流上调用标记方法时的位置。

PushbackInputStream 类的方法 reset 除了抛出一个 IOException 之外什么都不做。

覆盖:

在类 FilterInputStream 中重置

Throws:

Throw名称Throw描述
IOException如果调用此方法。

close

public void close() throws IOException

关闭此输入流并释放与该流关联的所有系统资源。 关闭流后,进一步的 read()、unread()、available()、reset() 或 skip() 调用将引发 IOException。 关闭以前关闭的流没有效果。

指定者:

在接口 AutoCloseable 中关闭

指定者:

在接口Closeable中关闭

覆盖:

在类 FilterInputStream 中关闭

Throws:

Throw名称Throw描述
IOException如果发生 I/O 错误。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/170800.html<

(0)
运维的头像运维
上一篇2025-03-22 13:46
下一篇 2025-03-22 13:47

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注