06 Ввод-вывод

9
Ввод/Вывод и Сериализация

Upload: phearnot

Post on 19-Jul-2015

310 views

Category:

Education


0 download

TRANSCRIPT

Page 1: 06 Ввод-вывод

Ввод/Вывод и Сериализация

Page 2: 06 Ввод-вывод

Потоки – основная абстракция

• Использование потоков позволяет абстрагироваться от конкретного механизма передачи данных

• Основополагающие классы – InputStream и OutputStream• Расширение стандартных классов позволяет работать с

потоками различной природы: файлами, данными из сокетов, и так далее

Page 3: 06 Ввод-вывод

Работа с консолью

• Потоки ошибок, ввода и вывода – объекты классов InputStream и OutputStream

• Потоки можно обернуть в обёртку нужного типа и работать с ней так же, как и с другими потоками

Page 4: 06 Ввод-вывод

Файлы

• Основная абстракция над объектами файловой системы – File• Объекты имеют методы для получения информации о

файловой системе, файлах, директориях, свободном пространстве, и так далее

Page 5: 06 Ввод-вывод

Философия ввода-вывода

В Java очень широко используются обёртки.• Если информация поступает в неудобном для вас виде

(например, в виде ByteInputStream), оберните исходный поток в поток, из которого вам удобно читать (например, в BufferedInputStream)

Page 6: 06 Ввод-вывод

Полезные классы java.io

• StringOutputStream – сохраняет данные, поступающие в поток, в строке

• PrintStream – никогда не бросает исключений при вводе/выводе

• Piped{Input|Output}Stream – вместе образуют pipe• ByteArray{Input|Output}Stream – в качестве

источника/стока используется массив байт

Page 7: 06 Ввод-вывод

Сериализация

• Для сериализации объектов стандартными средствами класс должен реализовывать инетфейс java.io.Serializable

• Да, у интерфейса нет никаких методов и полей. Интерфейс служит только для указания на возможность сериализации

• Объекты сериализуются в ObjectOutputStream, восстанавливаются из ObjectInputStream

• Поля, которые не нужно сохранять, помечаются ключевым словом transient

Page 8: 06 Ввод-вывод

Сериализация в XML

• Сериализация в XML позволит совместить преимущества машинной обработки данных и простого текстового представления данных

• Примеры фреймворков – Simple

Page 9: 06 Ввод-вывод

Сериализация в другие форматы

Среди недостатков формата XML специалисты отмечают большую избыточность. Google использует собственный формат Protocol Buffers, предоставляет собственные (open-source) библиотеки для работы с форматом.

message Person {

required int32 id = 1;

required string name = 2;

optional string email = 3;

}