目录:系统学习 Java IO---- 目录,概览

PushbackInputStream 旨在从 InputStream 解析数据时使用。 有时您需要先读取几个字节以查看将要发生的事情,然后才能确定如何解释当前字节, PushbackInputStream 允许这样做。 实际上,它允许将读取的字节推回到流中,这样就像流没有被动过,下次调用 read() 时,将再次重新读取。通俗来讲,就像男人对女人(Stream)说:我只看看,不动手。

构造器
  1. PushbackInputStream(InputStream in):通过输入流 in 创建 PushbackInputStream 。

  2. PushbackInputStream(InputStream in, int size):使用指定 size 创建 , size 代表推回缓冲区的大小。

这是一个简单的PushbackInputStream示例:

PushbackInputStream input = new PushbackInputStream(new FileInputStream("c:\\data\\input.txt"));
int data = input.read();
input.unread(data);

对 read() 的调用就像从 InputStream 中读取一个字节。 对 unread() 的调用将一个字节推回到PushbackInputStream 中。 下次调用 read() 时,将首先读取推回的字节。 如果将多个字节被推回,则推回的最新字节将首先从 read() 返回,就像在堆栈上一样。

字段摘要

流本身不支持回退功能, PushBackInputStream 内部维护了一个 byte 数组来实现推回操作的。

protected byte[] buf 推回缓冲区。

protected int pos 推回缓冲区中的位置,将读取该位置的下一个字节。

设置 PushbackInputStream 的后推限制

可以在 PushbackInputStream 的构造函数中设置应该能够读取的字节数。 以下是如何通过 PushbackInputStream 构造函数设置回退限制:

int pushbackLimit = 8;
PushbackInputStream input = new PushbackInputStream(
new FileInputStream("c:\\data\\input.txt"),
pushbackLimit);

此示例设置 8 字节的内部缓冲区。 这意味着您可以一次读取最多 8 个字节,然后推回去。

方法摘要
方法 说明
int read(byte[] b, int off, int len) 从此输入流将最多 len 个数据字节读入 byte 数组。
void unread(byte[] b) 推回一个 byte 数组:将其复制到推回缓冲区之前。
void unread(int b) 推回一个字节:将其复制到推回缓冲区之前。
void mark(int readlimit) 标记当前位置。和 ByteInputStream 一样,此类的 mark() 方法不执行任何操作。
void reset() 此类的 reset() 方法不执行任何操作,只抛出 IOException。调用就异常。

系统学习 Java IO (十)----回退流 PushbackInputStream的更多相关文章

  1. 系统学习 Java IO (十四)----字符读写缓存和回退 BufferedReader/BufferedWriter & PushbackReader

    目录:系统学习 Java IO---- 目录,概览 BufferedReader BufferedReader 类构造器接收一个 Reader 对象,为 Reader 实例提供缓冲. 缓冲可以加快 I ...

  2. 系统学习 Java IO (十二)----数据流和对象流

    目录:系统学习 Java IO---- 目录,概览 DataInputStream/DataOutputStream 允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型. 要想使用 ...

  3. 系统学习 Java IO (十六)----这么多类,应该用哪个?

    目录:系统学习 Java IO---- 目录,概览 Java IO目的和功能 Java IO 包含 InputStream,OutputStream,Reader 和 Writer 类的许多子类. 原 ...

  4. 系统学习 Java IO (六)----管道流 PipedInputStream/PipedOutputStream

    目录:系统学习 Java IO---- 目录,概览 PipedInputStream 类使得可以作为字节流读取管道的内容. 管道是同一 JVM 内的线程之间的通信通道. 使用两个已连接的管道流时,要为 ...

  5. 系统学习 Java IO (十五)----字符读写 Reader/Writer 其他子类

    目录:系统学习 Java IO---- 目录,概览 跟踪行号的缓冲字符输入流 LineNumberReader LineNumberReader 类是一个 BufferedReader ,用于跟踪读取 ...

  6. 系统学习 Java IO (十一)----打印流 PrintStream

    目录:系统学习 Java IO---- 目录,概览 PrintStream 类可以将格式化数据写入底层 OutputStream 或者直接写入 File 对象. PrintStream 类可以格式化基 ...

  7. 系统学习 Java IO (八)----装饰流 FilterInputStream/FilterOutputStream

    目录:系统学习 Java IO---- 目录,概览 这两个流的作用是:"封装其它的输入流,并为它们提供额外的功能" 他们的直接子类有: BufferedInputStream 的作 ...

  8. 系统学习 Java IO (九)----缓冲流 BufferedInputStream/BufferedOutputStream

    目录:系统学习 Java IO---- 目录,概览 BufferedInputStream BufferedInputStream 类为输入流提供缓冲. 缓冲可以加快IO的速度. BufferedIn ...

  9. 系统学习 Java IO ---- 目录,概览

    Java IO 类的系统教程,原创.主要参考自英文教程 Java IO Tutorial 和 Java Doc. http://tutorials.jenkov.com/java-io/index.h ...

随机推荐

  1. 论题Cascade Object Detection with Deformable Part Models一个怀疑

    该文的作者是Pedro F. Felzenszwalb等一下,著名DPM在目标检测模型.本文的工作是DPM(变形组件模型)级联,以加快检测速度. 加速的方式,现在其次是计算总结成绩的某些部分,假设小于 ...

  2. The bundle does not contain an app icon for iPhone / iPod Touch of exactly '120x120' pixels, in .pn

    xcode 6.3 载发生时的应用'Missing recommended icon file - The bundle does not contain an app icon for iPhone ...

  3. hibernate关于多对多注解配置

    Game实体类配置关系 @Entity @Table(name = "game") public class Game { @Id @GeneratedValue private ...

  4. POST请求——HttpWebRequest

    string url=""; string param=""; string result = string.Empty; HttpWebRequest req ...

  5. WPF的逻辑树和视觉树

    原文:WPF的逻辑树和视觉树 这部分的内容来自于即将出版的新书<WPF Unleashed>的第三章样章.关于什么是逻辑树,我们先看下面的一个伪XAML代码的例子: <Window ...

  6. TestDisk 数据恢复 重建分区表恢复文件-恢复diskpart clean

    source:http://www.cgsecurity.org/wiki/TestDisk_CN TestDisk 是一款开源软件,受GNU General Public License (GPL ...

  7. Java发展历程

    Java 的发展要追溯到 1991 年,Patrick Naughton(帕特里克·诺顿)和 James Gosling(詹姆斯·高斯林)带领 Sun 公司的工程师打算为有线电视转换盒之类的消费产品设 ...

  8. wpf-MVVM界面自适应:界面自适应及字体自适应

    原文:wpf-MVVM界面自适应:界面自适应及字体自适应 1,界面自适应 界面先划分Region,每个填充Region的View不设置Width属性,即可按照Region划分的比例,自适应屏幕分辨率 ...

  9. QT5.1编译后的安装目录问题(硬路径问题)

    这个是我的编译参数:configure -ltcg -confirm-license -opensource -platform win32-msvc2010 -debug-and-release - ...

  10. Delphi下IOC 模式的实现(反转模式,即Callback模式)

    IOC英文为 Inversion of Control,即反转模式,这里有著名的好莱坞理论:你呆着别动,到时我会找你.Ioc模式是解决调用者和被调用者之间关系的模式,可以有效降低软件的耦合度,并适合团 ...