Java IO操作——回退流PushbackInputStream

学习目标:
 掌握回退流的工作原理
使用PushbackInputStream完成回退操作

回退:给了用户第二次读的机会。
回退流
在JAVA IO中所有的数据都是采用顺序的读取方式,即对于一个输入流来讲都是采用从头到尾的顺序读取的,如果在输入流中某个不需要的内容被读取进来,则只能通过程序将这些不需要的内容处理掉,为了解决这样的处理问题,在JAVA中提供了一种回退输入流(PushbackInputStream、PushbackReader),可以把读取进来的某些数据重新回退到输入流的缓冲区之中。

使用InputStream要使用read()方法不断读取,是采用顺序的读取方式。
回退流机制

回退流同样分为字节流和字符流,此时还是以字节流为准。
PushbackInputStream类的常用方法
1、public PushbackInputStream(InputStream in) 构造方法 将输入流放入到回退流之中。
2、public int read() throws IOException   普通  读取数据。
3、public int read(byte[] b,int off,int len) throws IOException 普通方法 读取指定范围的数据。
4、public void unread(int b) throws IOException 普通方法 回退一个数据到缓冲区前面。
5、public void unread(byte[] b) throws IOException 普通方法 回退一组数据到缓冲区前面。
6、public void unread(byte[] b,int off,int len) throws IOException 普通方法 回退指定范围的一组数据到缓冲区前面。

对于回退操作来说,提供了三个unread()的操作方法,这三个操作方法与InputStream类中的read()方法是一一对应的。
  内存中使用ByteArrayInputStream,把内容设置到内存之中。
程序代码如下:
 

import java.io.ByteArrayInputStream ;
import java.io.PushbackInputStream ;
public class PushInputStreamDemo{
	public static void main(String args[]) throws Exception {	// 所有异常抛出
		String str = "www.baidu.com" ;		// 定义字符串
		PushbackInputStream push = null ;		// 定义回退流对象
		ByteArrayInputStream bai = null ;		// 定义内存输入流
		bai = new ByteArrayInputStream(str.getBytes()) ;	// 实例化内存输入流
		push = new PushbackInputStream(bai) ;	// 从内存中读取数据
		System.out.print("读取之后的数据为:") ;
		int temp = 0 ; 
		while((temp=push.read())!=-1){	// 读取内容
			if(temp=='.'){	// 判断是否读取到了“.”
				push.unread(temp) ;	// 放回到缓冲区之中
				temp = push.read() ;	// 再读一遍
				System.out.print("(退回"+(char)temp+")") ;
			}else{
				System.out.print((char)temp) ;	// 输出内容
			}
		}
	}
};

总结:
主要掌握回退流的工作原理即可,用到的时候再详细使用。
--------------------- 
作者:LIUXUN1993728 
来源:CSDN 
原文:https://blog.csdn.net/u013087513/article/details/52171078 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值