- •Механизмы ввода и вывода
- •План лекции
- •Обмен данными
- •Традиционно, проблемы!
- •Потоки данных
- •Разновидности потоков
- •Структура пакета java.io
- •Разновидности потоков
- •Класс InputStream
- •Класс OutputStream
- •Класс Reader
- •Класс Writer
- •Классы потоков ввода и вывода
- •Иерархия байтовых потоков
- •Иерархия символьных потоков
- •Забавная особенность
- •Группа потоков Print
- •Группа байтовых потоков ByteArray
- •Группа байтовых потоков ByteArray
- •Группы символьных потоков CharArray и String
- •Группа потоков File
- •Классы-трансляторы
- •InputStreamReader и
- •Группа потоков Filter
- •Группа потоков Buffered
- •Группа потоков Buffered
- •Группа потоков Piped
- •Группа потоков Piped
- •Класс StreamTokenizer
- •Класс StreamTokenizer
- •Группа байтовых потоков Data
- •Группа байтовых потоков Data
- •Класс File
- •Класс File
- •Пример записи в текстовый файл
- •Пример чтения из текстового файла и из консоли
- •Пример записи в байтовый файл
- •Пример чтения из байтового файла
- •Соответствие классов для байтовых и символьных потоков
- •Соответствие классов для байтовых и символьных потоков
- •Сериализация объектов
- •Сериализация объектов
- •Группа байтовых потоков Object
- •Пример сериализации в файл
- •Пример десериализации из файла
- •Сравнение исходного и восстановленного объектов
- •Подготовка классов к сериализации
- •Порядок сериализации и десериализации
- •Пример иерархии классов
- •Результаты десериализации
- •Порядок сериализации
- •Порядок десериализации
- •Сериализация связанных объектов
- •Настройка сериализации
- •Настройка сериализации
- •Контроль версий
- •Спасибо за внимание!
- •Дополнительные источники
Механизмы ввода и вывода
© Составление, Будаев Д.С., Гаврилов А.В., 2013
Лекция 5
УНЦ «Инфоком» Самара
2013
План лекции
Потоки данных (streams)
Виды потоков и базовые классы
Разновидности потоков
Сериализация
2
Обмен данными
Разнообразие задач
Сетевые приложенияОбработка ввода с клавиатуры
Запись и считывание данных из файловИ еще множество других
Выделение системы ввода/вывода
Широкий спектр источников и получателейРазличные форматы передачи данных
3
Традиционно, проблемы!
Ввод/вывод не должен зависеть от платформы!
Отделение логики однотипных операций ввода/вывода от низкоуровневых операций
Применяется модель потоков данных:
упорядоченная последовательность данных,
которой соответствует определенный источник (потоки ввода) или получатель (потоки вывода)
Поток ввода |
Поток вывода |
? |
? |
4
Потоки данных
Представляют собой объекты
Описываются специальными классами
Решают большинство типичных задач ввода/вывода
Базовые классы работают
с байтовым представлением данных
с символьным представлением данных
5
Разновидности потоков
Ввод Вывод
Байтовые |
Потоки ввода |
Потоки вывода |
Символьные Потоки чтения |
Потоки записи |
6
Структура пакета java.io
Типы общего назначения
Классы разновидностей потоков
Специализированные классы и интерфейсы для ввода и вывода значений простых типов
Классы и интерфейсы работы с файлами
Классы и интерфейсы механизма сериализации
7
Разновидности потоков
Ввод Вывод
Байтовые |
Потоки ввода |
Потоки вывода |
InputStream |
OutputStream |
|
Символьные |
Потоки чтения |
Потоки записи |
|
Reader |
Writer |
8
Класс InputStream
abstract int read() throws IOException
int read(byte[] b, int off, int len) throws IOException
int read(byte[] b)
throws IOException
long skip(long n) throws IOException
int available() throws IOException
void close()
throws IOException
9
Класс OutputStream
abstract void write(int b) throws IOException
void write(byte[] b, int off, int len) throws IOException
void write(byte[] b)
throws IOException
void flush()
throws IOException
void close()
throws IOException
10