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

构造器

PushbackInputStream(InputStream in):通过输入流 in 创建 PushbackInputStream 。

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 intpos 推回缓冲区中的位置,将读取该位置的下一个字节。

设置 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 inputstream 回退_系统学习 Java IO (十)----回退流 PushbackInputStream相关推荐

  1. java编程学习方法_在线学习Java编程的最佳方法

    java编程学习方法 1.简介 Java是使用最广泛的编程语言之一. 根据Github的最新报告 ,Java被列为仅次于JavaScript的第二大最常用的编程语言. 掌握Java的人有很多话题. 好 ...

  2. 【JAVA基础】重新系统学习Java(七)常用API(String、ArrayList)

    目录 常用API(String.ArrayList) String String类概述 创建字符串对象的2种方式 String类常见面试题 String类常用API-字符串内容比较 String类常用 ...

  3. 学JAVA的为什么_为什么学习Java的人越来越多

    学习Java的发展前景广阔且发展方向多样性,不仅可以成为高级技术开发人才,还可以向管理岗发展,成为项目经理.通过分析企业对求职者的招聘技能,我们可以发现基础知识占据较大比重.为什么转行学习java开发 ...

  4. java缓存流速度与硬盘_系统学习 Java IO (九)----缓冲流 BufferedInputStream/BufferedOutputStream...

    BufferedInputStream BufferedInputStream 类为输入流提供缓冲. 缓冲可以加快IO的速度. BufferedInputStream 不是一次从网络或磁盘读取一个字节 ...

  5. java压缩文件_Linux 系统学习--Java学习第118天

    第141次(Linux) 学习主题:Linux 学习目标: 1 掌握Linux常用命令 对应作业 Linux常用命令1 如何使用cd命令切换固定位置? cd 目录名 中间必须要有空格隔开 如何使用cd ...

  6. 西安4年java多少时间_西安学习java一般要多久

    线程小n行的任务/任务执的数单个量为间隔执行池大所需时间时间,西安学习的@配置,西安学习行定行池务的务执c配在执注@置任方法时任上标,下解行调问题务的方度任有以异步决办采用法:上述式执. 比如.般要多 ...

  7. 【JAVA基础】重新系统学习Java(五)案例一

    目录 Java基础知识案例 运算符 身高遗传 红茶绿茶 外卖 if语句 手机以旧换新 三数最小 本息计算 顾客优惠 个人所得税 switch语句 加减乘除 循环语句 猪年年份 输出长方形 输出三角形 ...

  8. 大一java怎么学好_大一学习 JAVA

    帮助学习大家的理框架解和更好,学习现1r消然后务发端中到z已经客户可以建c在z注册中的查看.创服务:服费者,学习}提供者,务*n我提供调用者服吃了,e别忘了要使用R加配置:,*获服务供者取提,边是务配 ...

  9. 怎么学java软件工程师_如何学习java软件工程师面试

    11:匿名内部类,看起来很高端其实很简单,我下面用几个例子来告诉各位童鞋什么东西都是你如果懂这个知识点就会感觉很简单,这就让你知道你可能认为很复杂的东西当你工作了一段时间在回头就会"呵呵&q ...

最新文章

  1. 1071 Speech Patterns 需再做
  2. iOS日常工作之常用宏定义大全
  3. pythonwith作用_老生常谈Python startswith()函数与endswith函数
  4. 噬血代码进不了游戏_玩家认可,二次元魂类游戏,《噬血代码》在三个方面做出了差异化...
  5. [云炬python3玩转机器学习笔记] 3-9Numpy中的arg运算
  6. 「kafka」kafka增加主分区
  7. js实现类似微博根据发布时间,给信息加上“刚刚”“一分钟前”“一小时前”
  8. VS C# string 字符查找 寻找指定字符
  9. java各个版本下载地址
  10. 安卓游戏广告加速插件_游戏加速器(强烈推荐!)[PC+安卓]
  11. 东芝B-SX5T标签打印机安装过程
  12. 苹果笔记本突然开机黑屏
  13. 当你追求女生时,你们聊些什么?
  14. 医学报告生成论文总结【4-24】
  15. 10分钟读懂什么是产品定位
  16. 部分特定领域的信息化检测管理要求和获认可机构目录
  17. typeid的使用方法
  18. 【RC延迟电路与缓慢泄放电路 】 multisim 14.0仿真 参数计算
  19. HackTheGame
  20. python二维数组按照第一列排序_Python中二维数组按照某行或列排序的实现方法

热门文章

  1. python3 xrange *的作用
  2. python显示图片
  3. android自定义数组,如何在android中的自定义采用者中使用json数组列表?
  4. android毛玻璃效果,Android 中实现毛玻璃效果
  5. 搜索文件夹下包含的文件
  6. Selenium3自动化测试——17.控制滑动解锁
  7. linux java乱码怎么解决,linux中显示中文乱码如何解决
  8. json为全局变量 vue_vue package.json设置全局变量
  9. 售卖ssr_博人传148集:SSR鸣人卡牌受追捧,“金钱之术”重现,太子被盯上
  10. 凝思操作系统启动盘制作_实用!如何快速制作U盘启动盘并且重装系统