Java推回输入流

Java推回输入流

开发工具与关键技术:My Eclipse 10、Java
作者:郑凯丰
撰写时间: 2019年5月6日
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

推回输入流
读取数据都是顺序读取如果读取到不想要的数据可以把数据推回到输入流的缓冲区。

推回输入流主要为两个类: PushbackInputStream  和  PushbackReader;


代码
import java.io.FileReader;
import java.io.IOException;
import java.io.PushbackReader;
import java.io.Reader;

public class PushbackReaderDemo {
	public static void main(String[] args) throws IOException {
		//创建字符输入流
Reader reader1=new FileReader("E:/z/Ostrch.java");

		//创建推回输入流 指定推回缓冲区大小为64,
		//如果不指定,默认缓冲区大小为1
		PushbackReader reader=new PushbackReader(reader1,64);
		
		char[] cs =new char[32];//临时数组
		int count=0;//读取的字符数
		String strLast="";//记录上次读取的字符串
while ((count =reader.read(cs,0,cs.length))!=-1){
			//本次读取内容
			String str=new String(cs,0,count);
			//上次+本次读取内容--避免 要查找的字符串被截取
			String StrContent=strLast+str;
			//查找目标字符串
			//目标出现位置
			int targetIndex =StrContent.indexOf("//字符型  char");
			if(targetIndex>-1){

				//找到目标字符串
				//将本次内容和上次内容一起推回缓冲区
				//*****推缓冲区的内容大小不能超过缓冲区的大小
				reader.unread(StrContent.toCharArray());

				//判断targetIndex 是否>32(临时数组大小)
				if(targetIndex>32){
					cs=new char[targetIndex];
				}
              //再次读取指定长度的内容(就是目标字符串之前的内容)
				reader.read(cs,0,targetIndex);
				str=new String(cs,0,targetIndex);
				System.out.println(str);
				break;
			}else{
				//为找到目标字符串
				//直接输出
				System.out.println(strLast);
				strLast=str;
			}
		}
	}
}



代码演示结果:
读取了文档里面的数据然后输出,如果不是你想要的则可以推回到缓冲区;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190424175943878.png)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值