文章来源: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(Input/Output)系统是Java平台中的一个重要组成部分,用于处理程序与外部设备之间的数据交换。Java IO系统提供了丰富的类来支持不同类型的输入输出操作,包括...
Apache Commons IO 是一个Java库,提供了大量的工具类来处理日常的输入/输出操作。这个库包含了许多实用的类,帮助开发者处理文件、流、过滤器、读写操作等各种IO任务。"commons io 源代码"是Apache Commons IO库的...
在阅读Java IO源码时,可以看到这些Decorator类都遵循了相同的模式:定义一个与被装饰类相同接口的类,持有被装饰对象的实例,并在其方法中调用被装饰对象的方法,同时添加额外的功能。例如,BufferedInputStream在...
`FilterReader`和`FilterWriter`作为过滤流,可以添加额外的功能,如`PushbackReader`允许回退读取的字符,`BufferedReader`提供缓冲功能以提高性能。`InputStreamReader`和`OutputStreamWriter`是字符流和字节流...
Java IO系统主要由`java.io`包提供支持,该包定义了一系列用于执行输入输出操作的类和接口。这些类和接口共同构建了一个面向对象的模型,使得开发者可以方便地进行数据的读取和写入操作。Java IO系统基于流的概念,...
Java IO的设计以流为基础,可以分为输入流(Input Stream)和输出流(Output Stream)两大类。 ##### 1.1 以字节为导向的Stream 以字节为导向的Stream是指数据以字节为单位进行传输。这类Stream通常用于处理二进制...
- **特殊流**: `PushbackInputStream`、`PushbackReader`、`LineNumberInputStream`、`LineNumberReader`等用于特定场景下的操作。 #### 六、使用建议 - **初始化**: 在程序开始时明确指定要使用的流类型及其模式...
Java的I/O库在`java.io`包中,提供了丰富的类和接口来支持各种类型的流操作。 ### I/O流概述 I/O流是Java对输入输出数据流的一种抽象,分为输入流(Input Stream)和输出流(Output Stream)。输入流是从数据源...
`RandomAccessFile` 类提供了对文件的随机访问能力,可以在文件的任意位置进行读写操作。 - **打开文件**:通过 `RandomAccessFile(String name, String mode)` 构造函数打开文件。 - **定位指针**:使用 `seek...
JAVA IO API是Java平台的核心部分,它提供了丰富的类和接口来处理输入输出操作。这篇文章将深入探讨JAVA IO的理论基础、用法分析以及常见的流类型。 一、理论准备 1. 流的概念:流是数据传输的一种抽象表示,它就...
Java IO库提供了一系列类和接口,用于读写文件、网络通信、标准输入输出等。本篇文章将详细介绍Java中常见的输入输出流及其相关概念。 首先,我们来看`File`类。`File`类是Java中用于操作文件和目录的基本工具。它...
字节流的所有读操作都继承自一个公共超类 java.io.InputStream 类。所有的写操作都继承自一个公共超类 java.io.OutputStream 类。InputStream 和 OutputStream 都是抽象类。InputStream 有 6 个低级输入流: 1. ...
Java 的 IO 系统分为两大类:字节流(Byte Streams)和字符流(Character Streams),它们分别以字节和 Unicode 字符为基本处理单位。 1. **字节流**: - 字节流主要用于处理二进制数据,如图像、音频等非文本格式...
Serializable 类通过实现 java.io.Serializable 接口以启用其序列化功能。 类摘要 BufferedInputStream BufferedInputStream 为另一个输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。 ...
- `PushbackReader`:支持回退功能。 - `PrintWriter`:用于打印操作。 - `InputStreamReader` 和 `OutputStreamWriter`:用于转换字节流到字符流。 - `FileReader` 和 `FileWriter`:从/向文件中读取/写入字符...
9. 字节流:`FileWriter`是字符流,`PushbackReader`和`FilterReader`是字符流。`FileInputStream`是字节流类。 10. switch语句:在Java中,`switch`语句可以处理`char`类型,所以代码可以正常编译并执行,输出结果...
Reader BufferedReader LineNumberReader CharArrayReader FilterReader PushbackReader InputStreamReader FileReader PipedReader StringReader
Java的输入/输出流是Java程序进行数据传输的基础,它被封装在`java.io`包中,提供了丰富而强大的功能,使得程序能够处理各种类型的输入和输出操作。Java的I/O流模型主要由字节流、字符流和特殊处理流组成。 **7.1 ...
- `java.io.PushbackReader`类提供了一个特殊的`unread`方法,允许将已读取的字符重新放回输入流中。 - **4.5 数据流** - `DataInputStream`和`DataOutputStream`类用于读写基本数据类型,如整数、浮点数等。 - ...
`PushbackReader` 和 `FilterReader` 都是与输入流相关的类,而 `FileInputStream` 是用于读取字节的输入流。 ### 10. switch-case 表达式选择题 **题目:** 下面的代码运行结果是什么? ```java char c = 'a'; ...