[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-i-o-nio-kakoy-klass-pozvolyaet-chitat-dannye-iz-vkhodnogo-baytovogo-potoka-v-formate-primitivnykh-tipov-dannykh":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},664,"kakoy-klass-pozvolyaet-chitat-dannye-iz-vkhodnogo-baytovogo-potoka-v-formate-primitivnykh-tipov-dannykh",15,"i-o-nio","I\u002FO & NIO","📁","Какой класс позволяет читать данные из входного байтового потока в формате примитивных типов данных?","`DataInputStream` — это обрабатывающий поток, предназначенный для чтения данных примитивных типов Java из входного байтового потока в машинно-независимом формате.\n\n`DataInputStream` оборачивает другой `InputStream` и предоставляет типизированные методы для чтения каждого примитивного типа. Данные читаются в формате big-endian (старший байт первым), что гарантирует одинаковую интерпретацию данных на любой платформе. `DataInputStream` обычно используется в паре с `DataOutputStream`, который записывает данные в том же формате.\n\n### Методы чтения\n\n| Метод | Читает | Размер |\n|---|---|---|\n| `readBoolean()` | булевое значение | 1 байт |\n| `readByte()` | знаковый байт | 1 байт |\n| `readUnsignedByte()` | беззнаковый байт | 1 байт |\n| `readChar()` | символ char | 2 байта |\n| `readShort()` | значение short | 2 байта |\n| `readInt()` | значение int | 4 байта |\n| `readLong()` | значение long | 8 байт |\n| `readFloat()` | значение float | 4 байта |\n| `readDouble()` | значение double | 8 байт |\n| `readUTF()` | строку в модифицированной UTF-8 | переменный |\n\n### Пример\n\n```java\ntry (DataInputStream dis = new DataInputStream(\n        new BufferedInputStream(new FileInputStream(\"data.bin\")))) {\n    int id = dis.readInt();\n    double price = dis.readDouble();\n    String name = dis.readUTF();\n}\n```\n\nНа практике `DataInputStream` используется для чтения бинарных файлов с известной структурой, сетевых протоколов и файлов, записанных через `DataOutputStream`. В современном коде для обмена структурированными данными чаще применяют JSON, Protocol Buffers или Apache Avro.\n\n> **На собеседовании:** назовите класс `DataInputStream`, перечислите несколько методов чтения (`readInt()`, `readUTF()`, `readDouble()`), упомяните формат big-endian и парность с `DataOutputStream`.","","junior",[15,16,17,18],"core","inputstream","io","типы-данных",[],null,{"title":22,"description":23,"ogTitle":24,"ogDescription":25,"keywords":26,"schemaAnswer":36,"featuredSnippetReady":37},"DataInputStream — чтение примитивных типов Java — Gymterview","DataInputStream: чтение int, double, long, UTF-строк из байтового потока. Методы readInt(), readUTF(), формат big-endian, парность с DataOutputStream.","DataInputStream — чтение примитивных типов — Gymterview","Как DataInputStream читает примитивные типы Java из байтового потока. Методы, формат big-endian, пример кода.",[27,28,29,30,31,32,33,34,35],"DataInputStream","readInt","readUTF","readDouble","примитивные типы","big-endian","Java IO","бинарный формат","собеседование","DataInputStream — обрабатывающий поток для чтения примитивных типов Java (int, long, double, boolean, char, UTF-строк) из байтового потока в формате big-endian. Методы: readInt(), readLong(), readDouble(), readUTF() и др. Используется в паре с DataOutputStream для записи\u002Fчтения бинарных данных.",true]