`

跟我学IO(PushbackReader类)

阅读更多

文章来源: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.

分享到:
评论

相关推荐

    java IO 类层次图

    ### Java IO 类层次结构解析 #### 一、概述 Java IO(Input/Output)系统是Java平台中的一个重要组成部分,用于处理程序与外部设备之间的数据交换。Java IO系统提供了丰富的类来支持不同类型的输入输出操作,包括...

    commons io 源代码

    Apache Commons IO 是一个Java库,提供了大量的工具类来处理日常的输入/输出操作。这个库包含了许多实用的类,帮助开发者处理文件、流、过滤器、读写操作等各种IO任务。"commons io 源代码"是Apache Commons IO库的...

    IO流所涉及到的Decorator设计模式

    在阅读Java IO源码时,可以看到这些Decorator类都遵循了相同的模式:定义一个与被装饰类相同接口的类,持有被装饰对象的实例,并在其方法中调用被装饰对象的方法,同时添加额外的功能。例如,BufferedInputStream在...

    Io框架与类图

    `FilterReader`和`FilterWriter`作为过滤流,可以添加额外的功能,如`PushbackReader`允许回退读取的字符,`BufferedReader`提供缓冲功能以提高性能。`InputStreamReader`和`OutputStreamWriter`是字符流和字节流...

    Java,彻底明白Java语言中的IO系统

    Java IO系统主要由`java.io`包提供支持,该包定义了一系列用于执行输入输出操作的类和接口。这些类和接口共同构建了一个面向对象的模型,使得开发者可以方便地进行数据的读取和写入操作。Java IO系统基于流的概念,...

    彻底明白 Java 语言中的IO系统

    Java IO的设计以流为基础,可以分为输入流(Input Stream)和输出流(Output Stream)两大类。 ##### 1.1 以字节为导向的Stream 以字节为导向的Stream是指数据以字节为单位进行传输。这类Stream通常用于处理二进制...

    Java IO的一般使用原则

    - **特殊流**: `PushbackInputStream`、`PushbackReader`、`LineNumberInputStream`、`LineNumberReader`等用于特定场景下的操作。 #### 六、使用建议 - **初始化**: 在程序开始时明确指定要使用的流类型及其模式...

    java io java 输入输出

    Java的I/O库在`java.io`包中,提供了丰富的类和接口来支持各种类型的流操作。 ### I/O流概述 I/O流是Java对输入输出数据流的一种抽象,分为输入流(Input Stream)和输出流(Output Stream)。输入流是从数据源...

    Java IO口解析(初级)

    `RandomAccessFile` 类提供了对文件的随机访问能力,可以在文件的任意位置进行读写操作。 - **打开文件**:通过 `RandomAccessFile(String name, String mode)` 构造函数打开文件。 - **定位指针**:使用 `seek...

    JAVA IO API使用详解

    JAVA IO API是Java平台的核心部分,它提供了丰富的类和接口来处理输入输出操作。这篇文章将深入探讨JAVA IO的理论基础、用法分析以及常见的流类型。 一、理论准备 1. 流的概念:流是数据传输的一种抽象表示,它就...

    java 输入输出流

    Java IO库提供了一系列类和接口,用于读写文件、网络通信、标准输入输出等。本篇文章将详细介绍Java中常见的输入输出流及其相关概念。 首先,我们来看`File`类。`File`类是Java中用于操作文件和目录的基本工具。它...

    Java字节流与字符流的介绍.pdf

    字节流的所有读操作都继承自一个公共超类 java.io.InputStream 类。所有的写操作都继承自一个公共超类 java.io.OutputStream 类。InputStream 和 OutputStream 都是抽象类。InputStream 有 6 个低级输入流: 1. ...

    java输入输出流文档

    Java 的 IO 系统分为两大类:字节流(Byte Streams)和字符流(Character Streams),它们分别以字节和 Unicode 字符为基本处理单位。 1. **字节流**: - 字节流主要用于处理二进制数据,如图像、音频等非文本格式...

    JDK_API_1_6

    Serializable 类通过实现 java.io.Serializable 接口以启用其序列化功能。 类摘要 BufferedInputStream BufferedInputStream 为另一个输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。 ...

    java文件操作详细介绍

    - `PushbackReader`:支持回退功能。 - `PrintWriter`:用于打印操作。 - `InputStreamReader` 和 `OutputStreamWriter`:用于转换字节流到字符流。 - `FileReader` 和 `FileWriter`:从/向文件中读取/写入字符...

    java基础试题三.pdf

    9. 字节流:`FileWriter`是字符流,`PushbackReader`和`FilterReader`是字符流。`FileInputStream`是字节流类。 10. switch语句:在Java中,`switch`语句可以处理`char`类型,所以代码可以正常编译并执行,输出结果...

    java字节流 字符流学习

    Reader BufferedReader LineNumberReader CharArrayReader FilterReader PushbackReader InputStreamReader FileReader PipedReader StringReader

    Java的输入 输出流

    Java的输入/输出流是Java程序进行数据传输的基础,它被封装在`java.io`包中,提供了丰富而强大的功能,使得程序能够处理各种类型的输入和输出操作。Java的I/O流模型主要由字节流、字符流和特殊处理流组成。 **7.1 ...

    java基础知识测试题

    `PushbackReader` 和 `FilterReader` 都是与输入流相关的类,而 `FileInputStream` 是用于读取字节的输入流。 ### 10. switch-case 表达式选择题 **题目:** 下面的代码运行结果是什么? ```java char c = 'a'; ...

Global site tag (gtag.js) - Google Analytics