跟我学IO(PushbackReader类)

PushbackReader类提供了将将字符推回到流的字符流Reader。你可以通过PushbackReader(Reader in, int size)构造方法来构造推回PushbackReader对象,size表示回推字符数组大小。

PushbackReader类提供了将将字符推回到流的字符流Reader。你可以通过PushbackReader(Reader in, int size)构造方法来构造推回PushbackReader对象,size表示回推字符数组大小。 

实例:读取document目录下面的reader01.txt文件,然后将读取的字符数组转换成字符串,查看字符串中是否存在指定的字符串。如果存在指定的字符串,则将本次读取的字符数组推回到输入字符流中,然后再将其读取出来,进行输出(在输出前后追加<<和>>)。

package io.reader;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PushbackReader;

public class PushbackReaderTest {

	public static void main(String[] args) {
		PushbackReader reader = null;
		try {
		    // 构建PushbackReader字符流对象
		    reader = new PushbackReader(
				new InputStreamReader(
					new FileInputStream("document/reader01.txt")), 64);
		    char[] buffer = new char[64];
		    int len = 0;
		    while ( (len = reader.read(buffer)) != -1 ) {
		        String tempStr = new String(buffer, 0, len);
			System.out.println( tempStr );
			// 判断本次读取的字符串中是否存在“you”字符串
			if ( tempStr.indexOf("you") != -1 ) {
			    // 将本次读取的字符数组推回到输入字符流
			    reader.unread(tempStr.toCharArray());
			    // 读取推回的字符流,然后输出
			    if ( (len = reader.read(buffer)) != -1 ) {
			        System.out.println("<<" + new String(buffer, 0, len) + ">>");
			    }
		        }
		    }
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if ( null != reader ) {
				try {
					reader.close();
					reader = null;
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
}

输出结果:

It’s not my way to love you just when no one’s looking.
It’s no
<<It’s not my way to love you just when no one’s looking.
It’s no>>
t my way to take your hand if I’m not sure.
It’s not my way to 
<<t my way to take your hand if I’m not sure.
It’s not my way to >>
let you see what’s going on inside of me.
When it’s a love you’
<<let you see what’s going on inside of me.
When it’s a love you’>>
ll not be needing you’re not free.
Please stop pulling at my sl
<<ll not be needing you’re not free.
Please stop pulling at my sl>>
eeve if you’re just playing.
If you’ll not take the things you 
<<eeve if you’re just playing.
If you’ll not take the things you >>
make me want to give.
少壮不努力,老大徒悲伤。——汉乐府古辞《长歌行》
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号