java. lecture 06. i/o

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

Upload: colriot

Post on 04-Jul-2015

446 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Java. Lecture 06. I/O

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

Page 2: Java. Lecture 06. I/O

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

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

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

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

Page 3: Java. Lecture 06. I/O

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

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

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

Page 4: Java. Lecture 06. I/O

Файлы

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

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

Page 5: Java. Lecture 06. I/O

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

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

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

Page 6: Java. Lecture 06. I/O

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

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

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

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

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

Page 7: Java. Lecture 06. I/O

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

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

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

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

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

Page 8: Java. Lecture 06. I/O

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

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

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

Page 9: Java. Lecture 06. I/O

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

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

message Person {

required int32 id = 1;

required string name = 2;

optional string email = 3;

}

Page 10: Java. Lecture 06. I/O

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

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

message Person {

required int32 id = 1;

required string name = 2;

optional string email = 3;

}