
- •Ввод-вывод. Сериализация
- •Цели занятия
- •Ввод-вывод
- •Ввод-вывод
- •Ввод-вывод
- •Ввод-вывод
- •Ввод-вывод
- •Байтовые потоки
- •InputStream
- •InputStream
- •InputStream
- •InputStream
- •InputStream
- •InputStream
- •OutputStream
- •OutputStream
- •OutputStream
- •Символьные потоки
- •Reader
- •Reader
- •Reader
- •Различия Reader и InputStream
- •Reader
- •Writer
- •Writer
- •Writer
- •Символьные и стандартные потоки
- •InputStreamReader и
- •InputStreamReader и
- •InputStreamReader и
- •Краткий обзор классов потоков
- •Потоки Filter
- •Потоки Buffered
- •Потоки Buffered
- •Потоки Buffered
- •Потоки Piped
- •Потоки Piped
- •Потоки Piped
- •Байтовые потоки ByteArray
- •Символьные потоки CharArray и
- •Потоки Print
- •Потоки Print
- •Класс StreamTokenizer
- •Класс StreamTokenizer
- •Класс StreamTokenizer
- •Класс StreamTokenizer
- •Байтовые потоки Data. DataInput и
- •Классы потоков Data
- •Классы потоков Data
- •Классы потоков Data
- •Класс File
- •Потоки File
- •Потоки File
- •Сериализация объектов
- •Сериализация объектов
- •Сериализация объектов
- •Подготовка классов к
- •Подготовка классов к
- •Подготовка классов к
- •Порядок сериализации и
- •Порядок сериализации и
- •Порядок сериализации и
- •Порядок сериализации и
- •Порядок сериализации и
- •Порядок сериализации и
- •Настройка механизма
- •Настройка механизма
- •Настройка механизма
- •Настройка механизма
- •Контроль версий объектов
- •Контроль версий объектов
- •Контроль версий объектов
- •Контроль версий объектов
- •Литература

Ввод-вывод. Сериализация
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |

Цели занятия
2 Изучить:
•Потоки ввода-вывода и чтения-записи
•Понятие сериализации объекта
•Контроль версий
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |

Ввод-вывод
3• Функции ввода-вывода информации, реализованные
всоставе стандартного пакета java.io, определены
втерминах потоков данных (streams)
•Потоки данных – это упорядоченные последовательности данных, которым соответствует определённый источник (для потоков ввода) или получатель (для потоков вывода)
•Большинство типов потоков данных поддерживает методы определённых базовых интерфейсов и абстрактных классов с некоторыми дополнениями
•Пакет java.io охватывает определения типов двух основных разновидностей – символьных потоков и байтовых потоков
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |

Ввод-вывод
4• Под символьными потоками понимают последовательности 16-битовых символов Unicode, а каждому байту отвечает порция данных длиной 8 бит
•Ввод-вывод может быть либо текстовым, либо бинарным
•Функции текстового ввода-вывода способны обращаться с потоками символов, поддающихся восприятию человеком (например, с исходными текстами программ), а средства обработки бинарных данных имеют дело с информацией, хранящейся в двоичном виде (например, с битовыми представлениями графических изображений)
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |

Ввод-вывод
5• Символьные потоки используются в
операциях текстового ввода-вывода, а байтовые – при работе с бинарными данными
•Байтовые потоки принято называть потоками ввода и потоками вывода, а символьные – потоками чтения и потоками записи
•Почти для каждого потока ввода существует соответствующий поток вывода, а для большинства потоков ввода и вывода определены символьные потоки чтения и записи, обладающие схожими функциональными чертами, и наоборот
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |

Ввод-вывод
6• Классы и интерфейсы из состава пакета java.io можно условно разделить на пять обширных групп:
1)типы общего назначения, служащие для построения различных типов байтовых и символьных потоков: потоки ввода и вывода, чтения и записи, а также классы, позволяющие выполнять взаимные преобразования между ними
2)классы, определяющие разновидности потоков: фильтрованные потоки, буферизованные потоки, канальные потоки, а также специальные подвиды таких потоков, такие как поток чтения строк с сохранением нумерации и лексический анализатор потока чтения
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |

Ввод-вывод
73) специализированные потоковые классы и интерфейсы для ввода и вывода значений простых типов и строк
4)классы и интерфейсы для обработки файловых данных в стиле, не зависящем от особенностей платформы
5)классы и интерфейсы, поддерживающие механизм сериализации объектов
•Объекты класса IOException используются многими методами ввода-вывода в качестве сигнала о возникновении исключительной ситуации
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |

Байтовые потоки
8• Существует ряд особенностей, присущих всем байтовым потокам данных: например, все они поддерживают механизм открытия и закрытия
•Поток открывается при создании объекта класса и, оставаясь открытым, позволяет осуществлять операции чтения и записи данных
•Поток закрывается при вызове метода close() объекта
•Закрытие потока служит цели высвобождения системных ресурсов, которые используются потоком
•Если поток явно не закрывается, он продолжает существовать и расходовать системные ресурсы
•Потоки следует закрывать сразу после завершения их использования
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |

InputStream
9• В составе абстрактного класса InputStream объявлены методы, обеспечивающие выполнение
функций ввода байтовых данных из определённого источника
•InputStream является базовым классом по отношению к потокам ввода, определённых в пакете java.io, и обладает методами, перечисленными ниже
public abstract int read() throws IOException
Вводит один байт данных и возвращает его в виде целого числа из диапазона от 0 до 255, иными словами, байтовое значение трактуется как целое без знака. Если байтов, готовых для ввода, не существует ввиду достижения конца потока, возвращается значение -1
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |

InputStream
10 |
public int read(byte[] buf, int offset, int |
|
|
|
count) throws IOException |
|
Вводит байты данных и сохраняет их в части |
|
массива buf, максимальное количество байтов, |
|
подлежащих вводу, определяется значением count |
|
(если 0 – ввод не производится и возвращается 0). |
|
Байты заносятся в элементы массива, начиная с |
|
buf[offset] и до buf[offset+count-1]. Метод |
|
возвращает количество фактически введённых |
|
байтов. Если ввиду достижения конца потока не |
|
введён ни один байт, возвращается -1. Если |
|
первый байт не может быть введён по причине, не |
|
связанной с достижением конца потока (например, |
|
поток уже закрыт), выбрасывается исключение |
|
типа IOException |
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |