[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-i-o-nio-kakie-podklassy-klassa-inputstream-vy-znaete-dlya-chego-oni-prednaznacheny":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":19,"progress":20,"seo":21},661,"kakie-podklassy-klassa-inputstream-vy-znaete-dlya-chego-oni-prednaznacheny",15,"i-o-nio","I\u002FO & NIO","📁","Какие подклассы класса InputStream вы знаете, для чего они предназначены?","`InputStream` — абстрактный класс, определяющий контракт для побайтового чтения данных. Его основные подклассы можно разделить на узловые (источники данных) и обрабатывающие (обёртки).\n\n### Узловые подклассы\n\n| Класс | Назначение |\n|---|---|\n| `FileInputStream` | Чтение данных из файла на диске |\n| `ByteArrayInputStream` | Чтение из массива байт в памяти (полезно для тестирования) |\n| `PipedInputStream` | Чтение из канала, связанного с `PipedOutputStream` (межпоточное взаимодействие) |\n| `StringBufferInputStream` | Чтение из строки (deprecated, заменён на `StringReader`) |\n\n### Обрабатывающие подклассы (обёртки)\n\n| Класс | Назначение |\n|---|---|\n| `BufferedInputStream` | Буферизация чтения — уменьшает количество обращений к источнику данных |\n| `DataInputStream` | Чтение примитивных типов Java (int, double, UTF-строк) из потока |\n| `ObjectInputStream` | Десериализация объектов из потока |\n| `FilterInputStream` | Базовый класс для потоков-обёрток, реализующий паттерн Декоратор |\n| `PushbackInputStream` | Позволяет вернуть прочитанные байты обратно в поток |\n| `SequenceInputStream` | Объединяет несколько потоков InputStream в один последовательный поток |\n\nНа практике чаще всего используются `FileInputStream` (обычно обёрнутый в `BufferedInputStream`), `ByteArrayInputStream` (для тестов и работы с данными в памяти), `DataInputStream` (для бинарных протоколов) и `ObjectInputStream` (для десериализации, хотя в современном коде предпочитают JSON\u002FProtobuf).\n\n> **На собеседовании:** перечислите 5-6 ключевых подклассов с кратким назначением. Покажите понимание деления на узловые и обрабатывающие потоки. Упомяните, что `StringBufferInputStream` deprecated.","","junior",[15,16,17,18],"core","основы","inputstream","io",[],null,{"title":22,"description":23,"ogTitle":24,"ogDescription":25,"keywords":26,"schemaAnswer":36,"featuredSnippetReady":37},"Подклассы InputStream в Java — Gymterview","Подклассы InputStream: FileInputStream, BufferedInputStream, ByteArrayInputStream, DataInputStream, ObjectInputStream и другие. Узловые и обрабатывающие потоки.","Подклассы класса InputStream в Java — Gymterview","Обзор подклассов InputStream: узловые (File, ByteArray, Piped) и обрабатывающие (Buffered, Data, Object, Pushback, Sequence).",[27,28,29,30,31,32,33,34,35],"InputStream","FileInputStream","BufferedInputStream","DataInputStream","ObjectInputStream","ByteArrayInputStream","подклассы","Java IO","собеседование","Узловые: FileInputStream (чтение из файла), ByteArrayInputStream (из массива байт), PipedInputStream (межпоточный канал). Обрабатывающие: BufferedInputStream (буферизация), DataInputStream (чтение примитивных типов), ObjectInputStream (десериализация), PushbackInputStream (возврат байт в поток), SequenceInputStream (объединение потоков).",true]