java. lecture 06. i/o
TRANSCRIPT
Ввод/Вывод и Сериализация
Потоки – основная абстракция
• Использование потоков позволяет абстрагироваться от конкретного механизма передачи данных
• Основополагающие классы – InputStream и OutputStream• Расширение стандартных классов позволяет работать с
потоками различной природы: файлами, данными из сокетов, и так далее
Работа с консолью
• Потоки ошибок, ввода и вывода – объекты классов InputStream и OutputStream
• Потоки можно обернуть в обёртку нужного типа и работать с ней так же, как и с другими потоками
Файлы
• Основная абстракция над объектами файловой системы – File• Объекты имеют методы для получения информации о
файловой системе, файлах, директориях, свободном пространстве, и так далее
Философия ввода-вывода
В Java очень широко используются обёртки.• Если информация поступает в неудобном для вас виде
(например, в виде ByteInputStream), оберните исходный поток в поток, из которого вам удобно читать (например, в BufferedInputStream)
Полезные классы java.io
• StringOutputStream – сохраняет данные, поступающие в поток, в строке
• PrintStream – никогда не бросает исключений при вводе/выводе
• Piped{Input|Output}Stream – вместе образуют pipe• ByteArray{Input|Output}Stream – в качестве
источника/стока используется массив байт
Сериализация
• Для сериализации объектов стандартными средствами класс должен реализовывать инетфейс java.io.Serializable
• Да, у интерфейса нет никаких методов и полей. Интерфейс служит только для указания на возможность сериализации
• Объекты сериализуются в ObjectOutputStream, восстанавливаются из ObjectInputStream
• Поля, которые не нужно сохранять, помечаются ключевым словом transient
Сериализация в XML
• Сериализация в XML позволит совместить преимущества машинной обработки данных и простого текстового представления данных
• Примеры фреймворков – Simple
Сериализация в другие форматы
Среди недостатков формата XML специалисты отмечают большую избыточность. Google использует собственный формат Protocol Buffers, предоставляет собственные (open-source) библиотеки для работы с форматом.
message Person {
required int32 id = 1;
required string name = 2;
optional string email = 3;
}
Сериализация в другие форматы
Среди недостатков формата XML специалисты отмечают большую избыточность. Google использует собственный формат Protocol Buffers, предоставляет собственные (open-source) библиотеки для работы с форматом.
message Person {
required int32 id = 1;
required string name = 2;
optional string email = 3;
}