推回输入流

没有推回输出流

package day9yue11;

import java.io.*;
public class PushbackTest {
	public static void main(String[] args) throws Exception {
		//先创建文件回推流对象pr,缓冲为64
		PushbackReader pr = new PushbackReader(new FileReader("d:\\test.txt"), 64);
		
		//创建取水的竹筒
        char[] ch = new char[32];
        //用于保存上次ch取的水
        String lastContent="";
        
        //用于保存本次取水的长度
        int hasRead = 0;
        
        //开始循环取水了
        while((hasRead = pr.read(ch)) >0)
        {
        	//每次取得水,全部转成字符串 content
        	String content = new String(ch,0,hasRead);
        	//用于标记 “new PushbackReader” 在字符串中的位置
        	int targetIndex = 0;
        	//如果new PushbackReader存在于拼接字符串里面,那么标记好存在的位置,同时执行选择语句
        	if((targetIndex = (content+lastContent).indexOf("new PushbackReader"))>0  )
        	{
        		//把拼接的字符串推回到流的缓冲 64字符里面,推回前要转化成字符数组,因为是字符流,都是以字符数组操作
        		pr.unread((content+lastContent).toCharArray());
        		
        		//如果“new PushbackReader” 在字符串组合里面大于32的,那么读取字符串“new PushbackReader”之前的内容char[32]是不够的
        		
        		if(targetIndex>32)
        		{
        			ch = new char[targetIndex];
        		}
        		
        		//开始读取推回的,并且是“new PushbackReader” 前面的内容,因为下标和长度已经确定好了
        		//从推回字符串的下标0开始读取,读取长度是targetIndex
        		pr.read(ch,0,targetIndex);
        		
        		System.out.println(new String(ch,0,targetIndex));
        		System.exit(0);
        	}
        	else
        	{
        		System.out.println(lastContent);
        		
        		//这一步很重要,持续交换,新读取的内容保存在lastContent ,,这样能保证lastContent是最后一次读取的东西
        		lastContent = content;
        	}
        	
        	
        	
        }
        
        pr.close();
		
		
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值