[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-i-o-nio-chem-otlichayutsya-i-chto-obshchego-u-inputstream-outputstream-reader-writer":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":18,"progress":19,"seo":20},669,"chem-otlichayutsya-i-chto-obshchego-u-inputstream-outputstream-reader-writer",15,"i-o-nio","I\u002FO & NIO","📁","Чем отличаются и что общего у InputStream, OutputStream, Reader, Writer?","Эти четыре класса образуют фундамент системы ввода\u002Fвывода Java, представляя собой корневые абстрактные классы двух пар: байтовой и символьной.\n\n| Характеристика | InputStream | OutputStream | Reader | Writer |\n|---|---|---|---|---|\n| Направление | Чтение | Запись | Чтение | Запись |\n| Тип данных | byte (8 бит) | byte (8 бит) | char (16 бит, Unicode) | char (16 бит, Unicode) |\n| Базовый метод | `read()` | `write(int)` | `read()` | `write(int)` |\n| Реализует | Closeable | Closeable, Flushable | Closeable | Closeable, Flushable |\n\n### Общее\n\n- Все четыре — абстрактные классы, определяющие контракты для своих иерархий.\n- Все реализуют `Closeable` (и `AutoCloseable`), что позволяет использовать `try-with-resources`.\n- Все используют паттерн Декоратор для добавления функциональности (буферизация, сжатие, кодирование).\n- У всех есть методы `close()` для освобождения ресурсов.\n\n### Различия\n\n- Байтовые потоки (`InputStream`\u002F`OutputStream`) работают с сырыми байтами и подходят для любых данных (бинарные файлы, изображения, сеть).\n- Символьные потоки (`Reader`\u002F`Writer`) работают с символами Unicode и предназначены для текстовых данных с учётом кодировки.\n- Потоки вывода (`OutputStream`\u002F`Writer`) дополнительно реализуют интерфейс `Flushable` с методом `flush()` для принудительного сброса буфера.\n\nМост между байтовыми и символьными потоками обеспечивают `InputStreamReader` (байты в символы при чтении) и `OutputStreamWriter` (символы в байты при записи).\n\n> **На собеседовании:** покажите понимание двух измерений: тип данных (byte vs char) и направление (чтение vs запись). Упомяните мосты InputStreamReader\u002FOutputStreamWriter и общие черты (AutoCloseable, паттерн Декоратор).","","junior",[15,16,17],"core","основы","io",[],null,{"title":21,"description":22,"ogTitle":23,"ogDescription":24,"keywords":25,"schemaAnswer":36,"featuredSnippetReady":37},"InputStream, OutputStream, Reader, Writer — сравнение — Gymterview","Сравнение четырёх корневых классов Java IO: байтовые vs символьные, чтение vs запись. Общее: AutoCloseable, паттерн Декоратор, мосты между потоками.","InputStream, OutputStream, Reader, Writer — что общего и чем отличаются — Gymterview","Два измерения: тип данных (byte vs char) и направление (чтение vs запись). Общие черты и мосты между потоками.",[26,27,28,29,30,31,32,33,34,35],"InputStream","OutputStream","Reader","Writer","байтовые потоки","символьные потоки","AutoCloseable","Декоратор","InputStreamReader","собеседование","Общее: все абстрактные, реализуют Closeable (AutoCloseable), используют паттерн Декоратор. Отличия: InputStream\u002FOutputStream работают с byte (8 бит), Reader\u002FWriter — с char (16 бит Unicode). OutputStream\u002FWriter реализуют Flushable. Мосты: InputStreamReader (байты→символы) и OutputStreamWriter (символы→байты).",true]