[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-i-o-nio-kakie-sushchestvuyut-vidy-potokov-vvoda-vyvoda":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},658,"kakie-sushchestvuyut-vidy-potokov-vvoda-vyvoda",15,"i-o-nio","I\u002FO & NIO","📁","Какие существуют виды потоков ввода\u002Fвывода?","Потоки ввода\u002Fвывода в Java делятся на два основных вида по типу обрабатываемых данных: байтовые и символьные.\n\nБайтовые потоки оперируют сырыми байтами и подходят для работы с любыми данными — изображениями, аудио, бинарными файлами. Символьные потоки оперируют символами Unicode (char, 16 бит) и предназначены для работы с текстовыми данными, автоматически учитывая кодировку.\n\n| Вид | Чтение | Запись | Единица данных |\n|---|---|---|---|\n| Байтовые | `java.io.InputStream` | `java.io.OutputStream` | байт (8 бит) |\n| Символьные | `java.io.Reader` | `java.io.Writer` | char (16 бит) |\n\nПомимо этого, потоки делятся по роли:\n\n- Узловые потоки (node streams) — работают непосредственно с источником данных (файл, массив, строка, сетевое соединение): `FileInputStream`, `ByteArrayInputStream`, `FileReader`.\n- Потоки-обёртки (filter\u002Fprocessing streams) — добавляют функциональность к другим потокам (буферизация, сжатие, преобразование типов): `BufferedInputStream`, `DataInputStream`, `InputStreamReader`.\n\nЭтот паттерн обёртывания потоков — классический пример применения паттерна Декоратор (Decorator), позволяющего комбинировать функции без создания множества подклассов.\n\n> **На собеседовании:** назовите два вида (байтовые и символьные) и их базовые классы. Дополнительный плюс — упомянуть деление на узловые потоки и потоки-обёртки, а также паттерн Декоратор.","","junior",[15,16,17],"core","основы","io",[],null,{"title":21,"description":22,"ogTitle":21,"ogDescription":23,"keywords":24,"schemaAnswer":34,"featuredSnippetReady":35},"Виды потоков ввода\u002Fвывода в Java — Gymterview","Два вида потоков ввода\u002Fвывода Java: байтовые (InputStream\u002FOutputStream) и символьные (Reader\u002FWriter). Узловые потоки и обёртки, паттерн Декоратор.","Байтовые и символьные потоки Java IO. Узловые потоки vs обёртки. Паттерн Декоратор в потоках ввода\u002Fвывода.",[25,26,27,28,29,30,31,32,33],"потоки ввода-вывода","InputStream","OutputStream","Reader","Writer","байтовые потоки","символьные потоки","Декоратор","собеседование","В Java два вида потоков ввода\u002Fвывода: байтовые (InputStream\u002FOutputStream, работают с byte) и символьные (Reader\u002FWriter, работают с char Unicode). Также потоки делятся на узловые (работают с источником: FileInputStream, FileReader) и обрабатывающие обёртки (добавляют функциональность: BufferedInputStream, DataInputStream) — паттерн Декоратор.",true]