Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Haulmont-презентации Java / Haulmont. java_se_4.ppt
Скачиваний:
46
Добавлен:
16.03.2015
Размер:
1.16 Mб
Скачать

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

Все права защищены. 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

Соседние файлы в папке Haulmont-презентации Java