跟我学IO(PushbackReader类)

本文介绍如何使用 Java 的 PushbackReader 类实现字符流的回退功能,并提供了一个具体的应用实例,展示如何读取文件并将特定内容回退再读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章来源:http://www.hxstrive.com/article/225.htm  

 

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值