java push_back_Java代码中PushbackInputStream类如何使用呢?

摘要:

下文使用Java代码中PushbackInputStream类的用法分享,如下所示:

PushbackInputStream类简介:

PushbackInputStream的功能为添加到另一个输入流以推回或读取一个字节

PushbackInputStream类的read()方法从输入流中读取一个字节

unread()方法将一个字节推回输入流

例:

Java 中PushbackInputStream类的示例

package com.maomao365;

import java.io.ByteArrayInputStream;

import java.io.IOException;

import java.io.PushbackInputStream;

/**

* @author maomao365

*/

public class PushbackInputStreamExample {

public static void main(String[] args) {

String data = "这里是maomao365.com的PushbackInputStream类用法";

ByteArrayInputStream byteArrayInputStream = null;

PushbackInputStream pushbackInputStream = null;

try {

byteArrayInputStream = new ByteArrayInputStream(data.getBytes());

pushbackInputStream = new PushbackInputStream(byteArrayInputStream);

//读取第一个字符到流中

int i=pushbackInputStream.read();

System.out.println((char)i);

//弹出刘中的字符

pushbackInputStream.unread(i);

//输出现在流中的字符

byte b[] = new byte[data.getBytes().length];

pushbackInputStream.read(b);

System.out.println(new String(b));

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

if (pushbackInputStream != null) {

pushbackInputStream.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Closeable Closeable 是可以关闭的数据源或目标。 DataInput DataInput 接口用于从二进制流读取字节,并根据所有 Java 基本型数据进行重构。 DataOutput DataOutput 接口用于将数据从任意 Java 基本型转换为一系列字节,并将这些字节写入二进制流。 Externalizable Externalizable 实例的唯一特性是可以被写入序列化流,该负责保存和恢复实例内容。 FileFilter 用于抽象路径名的过滤器。 FilenameFilter 实现此接口的实例可用于过滤器文件名。 Flushable Flushable 是可刷新数据的目标地。 ObjectInput ObjectInput 扩展 DataInput 接口以包含对象的读操作。 ObjectInputValidation 允许验证图形对象的回调接口。 ObjectOutput ObjectOutput 扩展 DataOutput 接口以包含对象的写入操作。 ObjectStreamConstants 写入 Object Serialization Stream 的常量。 Serializable 通过实现 java.io.Serializable 接口以启用其序列化功能。 摘要 BufferedInputStream BufferedInputStream 为另一个输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。 BufferedOutputStream 该实现缓冲的输出流。 BufferedReader 从字符输入流读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。 BufferedWriter 将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。 ByteArrayInputStream ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流读取的字节。 ByteArrayOutputStream 此实现了一个输出流,其的数据被写入一个 byte 数组。 CharArrayReader 此实现一个可用作字符输入流的字符缓冲区。 CharArrayWriter 此实现一个可用作 Writer 的字符缓冲区。 Console 此包含多个方法,可访问与当前 Java 虚拟机关联的基于字符的控制台设备(如果有)。 DataInputStream 数据输入流允许应用程序以与机器无关方式从底层输入流读取基本 Java 数据型。 DataOutputStream 数据输出流允许应用程序以适当方式将基本 Java 数据型写入输出流。 File 文件和目录路径名的抽象表示形式。 FileDescriptor 文件描述符的实例用作与基础机器有关的某种结构的不透明句柄,该结构表示开放文件、开放套接字或者字节的另一个源或接收者。 FileInputStream FileInputStream 从文件系统的某个文件获得输入字节。 FileOutputStream 文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。 FilePermission 此表示对文件和目录的访问。 FileReader 用来读取字符文件的便捷。 FileWriter 用来写入字符文件的便捷。 FilterInputStream FilterInputStream 包含其他一些输入流,它将这些流用作其基本数据源,它可以直接传输数据或提供一些额外的功能。 FilterOutputStream 此是过滤输出流的所有的超。 FilterReader 用于读取已过滤的字符流的抽象。 FilterWriter 用于写入已过滤的字符流的抽象InputStream 此抽象是表示字节输入流的所有的超InputStreamReader InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。 LineNumberInputStream 已过时。 此错误假定字节能充分表示字符。 LineNumberReader 跟踪行号的缓冲字符输入流。 ObjectInputStream ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化。 ObjectInputStream.GetField 提供对从输入流读取的持久字段的访问权限。 ObjectOutputStream ObjectOutputStream 将 Java 对象的基本数据型和图形写入 OutputStream。 ObjectOutputStream.PutField 提供对要写入 ObjectOutput 的持久字段的编程访问。 ObjectStreamClass 的序列化描述符。 ObjectStreamField Serializable Serializable 字段的描述。 OutputStream 此抽象是表示输出字节流的所有的超。 OutputStreamWriter OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流的字符编码成字节。 PipedInputStream 管道输入流应该连接到管道输出流;管道输入流提供要写入管道输出流的所有数据字节。 PipedOutputStream 可以将管道输出流连接到管道输入流来创建通信管道。 PipedReader 传送的字符输入流。 PipedWriter 传送的字符输出流。 PrintStream PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。 PrintWriter 向文本输出流打印对象的格式化表示形式。 PushbackInputStream PushbackInputStream 为另一个输入流添加性能,即“推回 (push back)”或“取消读取 (unread)”一个字节的能力。 PushbackReader 允许将字符推回到流的字符流 reader。 RandomAccessFile 此的实例支持对随机访问文件的读取和写入。 Reader 用于读取字符流的抽象
`PushbackInputStream` 是Java IO库的一个,它提供了一种在读取输入流时将数据“推回”流的方法,从而可以重新读取该数据。具体来说,`PushbackInputStream` 允许您在读取输入流时将最近读取的字节推回到流,以便稍后再次读取它们。 例如,如果您正在读取一个文本文件,并且意外地读取了一些不是文本的字节,您可以使用 `PushbackInputStream` 将这些字节推回到流,然后重新读取它们。 以下是一个示例代码片段,演示如何使用 `PushbackInputStream`: ```java import java.io.*; public class PushbackInputStreamExample { public static void main(String[] args) throws IOException { String str = "Hello, world!"; ByteArrayInputStream bais = new ByteArrayInputStream(str.getBytes()); PushbackInputStream pbis = new PushbackInputStream(bais); int b = pbis.read(); System.out.println((char) b); // Output: H pbis.unread(b); // push back the first byte read b = pbis.read(); // read the first byte again System.out.println((char) b); // Output: H byte[] buf = new byte[5]; pbis.read(buf); System.out.println(new String(buf)); // Output: "ello," pbis.unread(buf); // push back the five bytes read byte[] buf2 = new byte[5]; pbis.read(buf2); System.out.println(new String(buf2)); // Output: "ello," } } ``` 在这个示例,我们首先将字符串 "Hello, world!" 转换为一个字节数组,然后使用 `ByteArrayInputStream` 将其包装为一个输入流。接下来,我们使用 `PushbackInputStream` 包装这个输入流。 我们首先读取第一个字节并将其输出。然后,我们使用 `unread` 方法将该字节推回流,并再次读取它。然后,我们读取五个字节,并使用 `unread` 方法将它们推回流。最后,我们再次读取五个字节,这次从流读取了之前推回的字节。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值