---
title: Специальные классы
seo:
  title: Специальные классы — Java Developer
  description: Тема «Специальные классы» для собеседования Java Developer. Для чего используется PushbackInputStream? Для чего используется SequenceInputStream?
---

[Все темы Java Developer](/java-developer)

## <strong>Для чего используется</strong> <code>PushbackInputStream</code><strong>?</strong> [#q-14bee738d69b8161b02ad11c5b2bad2d]

<code>PushbackInputStream</code> используется для возможности возврата байтов
обратно в поток ввода. Это полезно в ситуациях, когда нужно прочитать данные, а
затем "откатить" чтение для повторного анализа тех же байтов.

<strong>Основные применения&#58;</strong>

- <strong>Парсинг</strong>&#58; При разборе данных, где необходимо заглянуть
  вперед и вернуть байты, если они не соответствуют ожидаемым.

- <strong>Буферизация</strong>&#58; Удобен при работе с буферизированными
  данными, позволяя откатить чтение на несколько байтов назад.

<strong>Пример&#58;</strong>

```java
PushbackInputStream pbis = new PushbackInputStream(new FileInputStream("file.txt"));
int data = pbis.read();
// Если необходимо вернуть байт обратно
pbis.unread(data);
```

:::note[Ссылки для изучения]

1. [Специальные классы в Java](https://javarush.com/groups/posts/vidy-vlozhennyh-klassov)
   :::

---

## <strong>Для чего используется</strong> <code>SequenceInputStream</code><strong>?</strong> [#q-14bee738d69b813fa90df03440f141f2]

<code>SequenceInputStream</code> используется для последовательного чтения
данных из нескольких потоков ввода как из одного объединенного потока. Он
соединяет два или более <code>InputStream</code> объектов, позволяя
последовательно читать данные из одного потока за другим.

<strong>Основные применения&#58;</strong>

- <strong>Объединение файлов</strong>&#58; Чтение данных из нескольких файлов
  последовательно, как если бы это был один файл.

- <strong>Объединение потоков</strong>&#58; Чтение данных из нескольких потоков
  ввода в последовательности, что может быть полезно при работе с данными из
  различных источников.

<strong>Пример&#58;</strong>

```java
InputStream input1 = new FileInputStream("file1.txt");
InputStream input2 = new FileInputStream("file2.txt");
SequenceInputStream sis = new SequenceInputStream(input1, input2);

int data;
while ((data = sis.read()) != -1) {
    System.out.print((char) data);
}
sis.close();
```

:::note[Ссылки для изучения]

1. [Специальные классы в Java](https://javarush.com/groups/posts/vidy-vlozhennyh-klassov)
   :::
