[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-i-o-nio-kakie-podklassy-klassa-outputstream-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},665,"kakie-podklassy-klassa-outputstream-vy-znaete-dlya-chego-oni-prednaznacheny",15,"i-o-nio","I\u002FO & NIO","📁","Какие подклассы класса OutputStream вы знаете, для чего они предназначены?","`OutputStream` — абстрактный класс, определяющий контракт для побайтовой записи данных. Его подклассы, как и у `InputStream`, делятся на узловые и обрабатывающие.\n\n| Класс | Тип | Назначение |\n|---|---|---|\n| `FileOutputStream` | Узловой | Запись данных в файл на диске |\n| `ByteArrayOutputStream` | Узловой | Запись в буфер в памяти (массив байт), удобен для формирования данных перед отправкой |\n| `PipedOutputStream` | Узловой | Запись в канал, связанный с `PipedInputStream` (межпоточное взаимодействие) |\n| `BufferedOutputStream` | Обёртка | Буферизация записи — накапливает данные и записывает их блоком, уменьшая количество системных вызовов |\n| `DataOutputStream` | Обёртка | Запись примитивных типов Java (int, double, UTF-строк) в поток |\n| `ObjectOutputStream` | Обёртка | Сериализация объектов в поток |\n| `FilterOutputStream` | Обёртка | Базовый класс для потоков-обёрток |\n| `PrintStream` | Обёртка | Удобный вывод через методы `print()` и `println()`, автоматический flush; `System.out` и `System.err` — экземпляры `PrintStream` |\n\nНа практике `FileOutputStream` почти всегда оборачивается в `BufferedOutputStream` для повышения производительности. `ByteArrayOutputStream` удобен для формирования данных в памяти (например, при генерации PDF или формировании HTTP-ответа). `PrintStream` знаком каждому разработчику через `System.out.println()`.\n\n> **На собеседовании:** перечислите 5-6 подклассов. Подчеркните, что `System.out` — это `PrintStream`, а `FileOutputStream` на практике всегда буферизуют.","","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]