PushbackInputStream в Java
Last updated: 6 мая 2025 г.PushbackInputStream
– прочитав несколько байтов входного потока с помощью inpsrream.read()
бывает необходимо вернуться и прочитать эти же уже прочитанные ранее байты еще раз.
Делается с помощью inpsrteam.unread().
Пример программы:
1import java.io.*;
2import java.util.*;
3
4class PushbackStream {
5 public static void main(String[] args) {
6 try {
7 String str = "Hello world!!!";
8 byte b[] = str.getBytes();
9 ByteArrayInputStream bin = new ByteArrayInputStream(b);
10 PushbackInputStream push = new PushbackInputStream(bin);
11
12 // читаем первый символ
13 System.out.print((char)push.read());
14
15 // Возвращаем его обратно.
16 // То есть сейчас мы извлекли первый элемент ‘H’ из str
17 // и если мы вызовем System.out.print((char)push.read());
18 // еще раз, то извлечется уже второй ‘e’. А мы хотим
19 // опять прочитать первый. Для этого мы можем
20 // вставить его перед ‘e’ и прочитать его еще
21 // раз вместо ‘e’. На самом деле нам не обязательно
22 // вставлять именно ‘H’ можно вставить любой символ.
23 // Важная ремарка, что сама строка str
24 // при всех этих манипуляциях не изменяется.
25 push.unread(‘H’);
26
27 // читаем снова первый возвращенный символ
28 System.out.print((char)push.read());
29
30 // дальше будет читать со второго символа
31 System.out.print((char)push.read());
32 System.out.print((char)push.read());
33 System.out.print((char)push.read());
34 } catch (Exception e) {}
35 }
36}
Вывод:

Как видим, мы прочитали первый символ два раза. То есть мы прочитали его, потом вернули и прочитали его еще раз.
Следующие уроки
OutputStreamWriter в Java
8
мин.
ObjectStream в Java
10
мин.
FilterStream в Java
12
мин.