pushbackinputstream
时间: 2023-04-21 10:02:25 浏览: 121
java中的回退流1
`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` 方法将它们推回流中。最后,我们再次读取五个字节,这次从流中读取了之前推回的字节。
阅读全文