Java IO--回退流PushbackInputStream

回退流:

使用InputStream要使用read()方法不断读取,是采用顺序的读取方式。

回退流的操作机制:

回退操作同样分为字节流和字符流,下面以字节流举例

PushbackInputStream类常用方法:

对于回退操作来说,提供了三个unread()的操作方法,这三个操作方法与InputStream类中的read()方法是一一对应的。
内存中使用ByteArrayInputStream,把内容设置到内存之中。

import java.io.ByteArrayInputStream ;
import java.io.PushbackInputStream ;
public class PushInputStreamDemo{
	public static void main(String args[]) throws Exception {	// 所有异常抛出
		String str = "www.mldnjava.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) ;	// 输出内容
			}
		}
	}
};
时间: 2024-09-26 16:53:43

Java IO--回退流PushbackInputStream的相关文章

Java IO包装流如何关闭

问题: (1)JAVA的IO流使用了装饰模式,关闭最外面的流的时候会自动调用被包装的流的close()方吗? (2)如果按顺序关闭流,是从内层流到外层流关闭还是从外层到内存关闭? 问题(1)解释: 如下例子代码: 1 2 3   FileInputStream is = new FileInputStream(".");      BufferedInputStream bis = new BufferedInputStream(is);     bis.close(); 从设计模式上

Java IO: 字符流的Piped和CharArray

本章节将简要介绍管道与字符数组相关的reader和writer,主要涉及PipedReader.PipedWriter.CharArrayReader.CharArrayWriter. PipedReader 原文链接 PipedReader能够从管道中读取字符流.与PipedInputStream类似,不同的是PipedReader读取的是字符而非字节.换句话说,PipedReader用于读取管道中的文本.代码如下: Reader reader = new PipedReader(pipedW

java io对象流问题

问题描述 我把一个对象用Objectoutputstream,对象流写进文本里,然后还写入了一些其他的文字,不是对象,我在读取这个文件的时候读出了这个对象后剩下的文字应该怎么读出来?能换输入流吗?我用Objectinputstream读对象后,再读内容报错了Exceptioninthread"main"java.io.StreamCorruptedException:invalidtypecode:D3 解决方案 解决方案二:再换输入流,怎么定位那个不是对象的字符?一般写入对象,即对象

Java IO: 字符流的Buffered和Filter

本章节将简要介绍缓冲与过滤相关的reader和writer,主要涉及BufferedReader.BufferedWriter.FilterReader.FilterWriter. BufferedReader 原文链接 BufferedReader能为字符输入流提供缓冲区,可以提高许多IO处理的速度.你可以一次读取一大块的数据,而不需要每次从网络或者磁盘中一次读取一个字节.特别是在访问大量磁盘数据时,缓冲通常会让IO快上许多. BufferedReader和BufferedInputStrea

Java IO: 其他字节流(上)

本小节会简要概括Java IO中的PushbackInputStream,SequenceInputStream和PrintStream.其中,最常用的是PrintStream,System.out和System.err都是PrintStream类型的变量,请查看Java IO: System.in, System.out, System.err浏览更多关于System.out和System.err的信息. PushbackInputStream 原文链接 PushbackInputStream

Java IO教程

Java IO 是一套Java用来读写数据(输入和输出)的API.大部分程序都要处理一些输入,并由输入产生一些输出.Java为此提供了java.io包. 如果你浏览下java.io包,会对其中各样的类选择感到迷惑.这些类的作用都是什么?对于某个任务该选择哪个类?怎样创建你自己的类做插件?这个手册的目的就是给你介绍这些类是如何组织的,以及怎样使用他们,因此你就不会疑惑需要时怎样选取合适的类,或者是否有一个满足你需求的类已经存在了. Java.io 包的范围 java.io 包并没有涵盖所有输入输出

Java IO: 流

原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) Java IO流是既可以从中读取,也可以写入到其中的数据流.正如这个系列教程之前提到过的,流通常会与数据源.数据流向目的地相关联,比如文件.网络等等. 流和数组不一样,不能通过索引读写数据.在流中,你也不能像数组那样前后移动读取数据,除非使用RandomAccessFile 处理文件.流仅仅只是一个连续的数据流. 某些类似PushbackInputStream 流的实现允许你将数据重新推回

Java IO流学习总结

 Io流的内容比较多 ,大致可以分为字节流和字符流,其中为了提高效率又用到了缓冲区. Java流操作有关的类或接口: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作.  IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象.本

Java IO: 其他字符流(下)

作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本小节会简要概括Java IO中的PushbackReader,LineNumberReader,StreamTokenizer,PrintWriter,StringReader,StringWriter. PushbackReader 原文链接 PushbackReader与PushbackInputStream类似,唯一不同的是PushbackReader处理字符,PushbackInputSt