PushbackInputStream в Java

PushbackInputStream – прочитав несколько байтов входного потока с помощью inpsrream.read() бывает необходимо вернуться и прочитать эти же уже прочитанные ранее байты еще раз.

Делается с помощью inpsrteam.unread().

Пример программы:

import java.io.*; import java.util.*; class PushbackStream { public static void main(String[] args) { try { String str = “Hello world!!!”; byte b[] = str.getBytes(); ByteArrayInputStream bin = new ByteArrayInputStream(b); PushbackInputStream push = new PushbackInputStream(bin); // читаем первый символ System.out.print((char)push.read()); // Возвращаем его обратно. // То есть сейчас мы извлекли первый элемент ‘H’ из str // и если мы вызовем System.out.print((char)push.read()); // еще раз, то извлечется уже второй ‘e’. А мы хотим // опять прочитать первый. Для этого мы можем // вставить его перед ‘e’ и прочитать его еще // раз вместо ‘e’. На самом деле нам не обязательно // вставлять именно ‘H’ можно вставить любой символ. // Важная ремарка, что сама строка str // при всех этих манипуляциях не изменяется. push.unread(‘H’); // читаем снова первый возвращенный символ System.out.print((char)push.read()); // дальше будет читать со второго символа System.out.print((char)push.read()); System.out.print((char)push.read()); System.out.print((char)push.read()); } catch (Exception e) {} } }

Вывод:

Как видим, мы прочитали первый символ два раза. То есть мы прочитали его, потом вернули и прочитали его еще раз.

OutputStreamWriter в Java

OutputStreamWriter в Java: мост между символьными и байтовыми потоками. Пример записи текста в файл с конвертацией символов в байты.
Time to read: 8

ObjectStream в Java

Освойте сериализацию объектов в Java с ObjectInputStream/ObjectOutputStream. Практический пример сохранения и восстановления состояния объекта
Time to read: 10

FilterStream в Java

Разберитесь с FilterInputStream/FilterOutputStream в Java: создание кастомных потоков и модификация существующих на примере сдвига ASCII-символов.
Time to read: 12