关键词搜索

源码搜索 ×
×

(Java)回退流

发布2020-02-11浏览1012次

详情内容

一、基本概念

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

回退流操作机制:
在这里插入图片描述
从图中我们可以看出对于不需要的数据可以使用 unread() 方法将内容重新送回到输入流的缓冲区。

PushbackInputStream 类的常用方法:
在这里插入图片描述
表中的三个 unread() 方法与 InputStream 类中3个read() 方法相对应,所以回退完全是针对于输入流进行操作

回退流与输入流相对应:
在这里插入图片描述

二、操作回退流

现在内存中有一个“www.Helloworld.cn”的字符串,只要输入的内容是“.”则执行回退操作,即不读取"."

import java.io.ByteArrayInputStream;
import java.io.PushbackInputStream;

public class Test{
    public static void main(String[] args) throws Exception{
        String str = "www.helloworld.cn";
        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);//输出内容
            }
        }
    }
}

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载