🗊Презентация Механизмы ввода и вывода

Нажмите для полного просмотра!
Механизмы ввода и вывода, слайд №1Механизмы ввода и вывода, слайд №2Механизмы ввода и вывода, слайд №3Механизмы ввода и вывода, слайд №4Механизмы ввода и вывода, слайд №5Механизмы ввода и вывода, слайд №6Механизмы ввода и вывода, слайд №7Механизмы ввода и вывода, слайд №8Механизмы ввода и вывода, слайд №9Механизмы ввода и вывода, слайд №10Механизмы ввода и вывода, слайд №11Механизмы ввода и вывода, слайд №12Механизмы ввода и вывода, слайд №13Механизмы ввода и вывода, слайд №14Механизмы ввода и вывода, слайд №15Механизмы ввода и вывода, слайд №16Механизмы ввода и вывода, слайд №17Механизмы ввода и вывода, слайд №18Механизмы ввода и вывода, слайд №19Механизмы ввода и вывода, слайд №20Механизмы ввода и вывода, слайд №21Механизмы ввода и вывода, слайд №22Механизмы ввода и вывода, слайд №23Механизмы ввода и вывода, слайд №24Механизмы ввода и вывода, слайд №25Механизмы ввода и вывода, слайд №26Механизмы ввода и вывода, слайд №27Механизмы ввода и вывода, слайд №28Механизмы ввода и вывода, слайд №29Механизмы ввода и вывода, слайд №30Механизмы ввода и вывода, слайд №31Механизмы ввода и вывода, слайд №32Механизмы ввода и вывода, слайд №33Механизмы ввода и вывода, слайд №34Механизмы ввода и вывода, слайд №35Механизмы ввода и вывода, слайд №36Механизмы ввода и вывода, слайд №37

Содержание

Вы можете ознакомиться и скачать презентацию на тему Механизмы ввода и вывода. Доклад-сообщение содержит 37 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Механизмы ввода и вывода
Описание слайда:
Механизмы ввода и вывода

Слайд 2





План лекции
Потоки данных
Виды потоков и базовые классы
Разновидности потоков
Сериализация
Описание слайда:
План лекции Потоки данных Виды потоков и базовые классы Разновидности потоков Сериализация

Слайд 3





Традиционно, проблемы!
Система ввода/вывода не должна зависеть от платформы!
Применяется модель потоков данных:
упорядоченная последовательность данных,
которой соответствует определенный источник (потоки ввода) или получатель (потоки вывода)
Описание слайда:
Традиционно, проблемы! Система ввода/вывода не должна зависеть от платформы! Применяется модель потоков данных: упорядоченная последовательность данных, которой соответствует определенный источник (потоки ввода) или получатель (потоки вывода)

Слайд 4





Структура пакета java.io
Типы общего назначения
Классы разновидностей потоков
Специализированные классы и интерфейсы для ввода и вывода значений простых типов
Классы и интерфейсы работы с файлами
Классы и интерфейсы механизма сериализации
Описание слайда:
Структура пакета java.io Типы общего назначения Классы разновидностей потоков Специализированные классы и интерфейсы для ввода и вывода значений простых типов Классы и интерфейсы работы с файлами Классы и интерфейсы механизма сериализации

Слайд 5





Класс 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
Описание слайда:
Класс 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

Слайд 6





Класс 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
Описание слайда:
Класс 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

Слайд 7





Класс Reader
int read()
  throws IOException
abstract int read(char[] b, int off, int len)
  throws IOException
int read(char[] b)
  throws IOException 
long skip(long n)
  throws IOException 
boolean ready()
  throws IOException 
abstract void close()
  throws IOException
Описание слайда:
Класс Reader int read() throws IOException abstract int read(char[] b, int off, int len) throws IOException int read(char[] b) throws IOException long skip(long n) throws IOException boolean ready() throws IOException abstract void close() throws IOException

Слайд 8





Класс Writer
void write(int ch)
  throws IOException
abstract void write(char[] b, int off, int len)
  throws IOException
void write(char[] b) 
  throws IOException
void write(String str, int off, int len)
  throws IOException
void write(String str) 
  throws IOException
abstract void flush() 
  throws IOException 
abstract void close()
  throws IOException
Описание слайда:
Класс Writer void write(int ch) throws IOException abstract void write(char[] b, int off, int len) throws IOException void write(char[] b) throws IOException void write(String str, int off, int len) throws IOException void write(String str) throws IOException abstract void flush() throws IOException abstract void close() throws IOException

Слайд 9





Забавная особенность
Уже знакомые потоки:
		System.out
		System.in
		System.err
Какого они типа?
Байтового!!! (для совместимости 
с версиями Java 1.0 и 1.1)
Описание слайда:
Забавная особенность Уже знакомые потоки: System.out System.in System.err Какого они типа? Байтового!!! (для совместимости с версиями Java 1.0 и 1.1)

Слайд 10





Классы потоков ввода и вывода
Образуют 4 иерархии, в основе которых лежат базовые абстрактные классы
Имя любого дочернего класса в иерархии имеет суффикс, совпадающий с именем корневого класса

По сути делятся на 2 вида:
«Реальные» потоки: источник (получатель) данных реален
Потоки-обертки: источником (получателем) данных является другой поток
Описание слайда:
Классы потоков ввода и вывода Образуют 4 иерархии, в основе которых лежат базовые абстрактные классы Имя любого дочернего класса в иерархии имеет суффикс, совпадающий с именем корневого класса По сути делятся на 2 вида: «Реальные» потоки: источник (получатель) данных реален Потоки-обертки: источником (получателем) данных является другой поток

Слайд 11





Классы-трансляторы
Позволяют читать из байтового как из символьного и записывать в байтовый поток как в символьный (с учетом кодировки)
InputStreamReader
InputStreamReader(InputStream in)
InputStreamReader(InputStream in, String encoding)
  throws UnsupportedEncodingException
OutputStreamWriter
OutputStreamWriter(OutputStream out)
OutputStreamWriter(OutputStream out, String encoding)
  throws UnsupportedEncodingException
Описание слайда:
Классы-трансляторы Позволяют читать из байтового как из символьного и записывать в байтовый поток как в символьный (с учетом кодировки) InputStreamReader InputStreamReader(InputStream in) InputStreamReader(InputStream in, String encoding) throws UnsupportedEncodingException OutputStreamWriter OutputStreamWriter(OutputStream out) OutputStreamWriter(OutputStream out, String encoding) throws UnsupportedEncodingException

Слайд 12





Группа потоков Filter
FilterInputStream, FilterReader
FilterOutputStream, FiltrerWriter
Обертки, позволяют объединять потоки в цепочки для получения сложных потоков, обладающих расширенным набором функций
Обладают дополнительными защищенными конструкторами 
protected FilterInputStream(InputStream in)
В наследниках обычно переопределяются методы чтения/записи с добавлением новой функциональности
Описание слайда:
Группа потоков Filter FilterInputStream, FilterReader FilterOutputStream, FiltrerWriter Обертки, позволяют объединять потоки в цепочки для получения сложных потоков, обладающих расширенным набором функций Обладают дополнительными защищенными конструкторами protected FilterInputStream(InputStream in) В наследниках обычно переопределяются методы чтения/записи с добавлением новой функциональности

Слайд 13





Группа потоков Buffered
BufferedInputStream, BufferedReader
BufferedOutputStream, BufferedWriter
Обертки, осуществляют буферизацию данных на программном уровне
Размер буфера можно задать в конструкторе
Символьные версии имеют методы чтения и записи строк
Описание слайда:
Группа потоков Buffered BufferedInputStream, BufferedReader BufferedOutputStream, BufferedWriter Обертки, осуществляют буферизацию данных на программном уровне Размер буфера можно задать в конструкторе Символьные версии имеют методы чтения и записи строк

Слайд 14





Группа потоков Piped
PipedInputStream, PipedReader
PipedOutputStream, PipedWriter
Используются в виде пар ввода-вывода
Данные, переданные в поток вывода, служат источником для потока ввода
Например, реализуют механизм обмена данными между нитями
Поток-пара задается параметром конструктора либо с помощью метода connect()
Описание слайда:
Группа потоков Piped PipedInputStream, PipedReader PipedOutputStream, PipedWriter Используются в виде пар ввода-вывода Данные, переданные в поток вывода, служат источником для потока ввода Например, реализуют механизм обмена данными между нитями Поток-пара задается параметром конструктора либо с помощью метода connect()

Слайд 15





Группа байтовых потоков ByteArray
ByteArrayInputStream, ByteArrayOutputStream
В качестве источника и получателя данных используются массивы байт
В потоке вывода размер буфера может меняться динамически
В потоке вывода существуют методы преобразования:
к массиву байт
byte[] toByteArray()
к строке
String toString()
вывода в другой поток
void writeTo(OutputStream out)
Описание слайда:
Группа байтовых потоков ByteArray ByteArrayInputStream, ByteArrayOutputStream В качестве источника и получателя данных используются массивы байт В потоке вывода размер буфера может меняться динамически В потоке вывода существуют методы преобразования: к массиву байт byte[] toByteArray() к строке String toString() вывода в другой поток void writeTo(OutputStream out)

Слайд 16





Группы символьных потоков CharArray и String
CharArrayReader и CharArrayWriter аналогичны ByteArrayInputStream и ByteArrayOutputStream, но оперируют с массивом символов

StringReader и StringWriter имеют аналогичную функциональность, позволяют считывать символы из строки и записывать данные в строковый буфер
Описание слайда:
Группы символьных потоков CharArray и String CharArrayReader и CharArrayWriter аналогичны ByteArrayInputStream и ByteArrayOutputStream, но оперируют с массивом символов StringReader и StringWriter имеют аналогичную функциональность, позволяют считывать символы из строки и записывать данные в строковый буфер

Слайд 17





Группа потоков Print
Обертки PrintStream и PrintWriter содержат методы, упрощающие задачу вывода данных простых типов в текстовом виде
Методы print() и println() не выбрасывают исключений
System.out и System.err – единственные потоки PrintStream
Описание слайда:
Группа потоков Print Обертки PrintStream и PrintWriter содержат методы, упрощающие задачу вывода данных простых типов в текстовом виде Методы print() и println() не выбрасывают исключений System.out и System.err – единственные потоки PrintStream

Слайд 18





Класс StreamTokenizer
Не является потоком чтения, но позволяет обрабатывать информацию из них
Содержит методы лексической обработки текста
Ряд методов предназначен для настройки работы анализатора
Метод nextToken() производит обработку очередной лексемы, после чего:
Поле ttype содержит константу типа лексемы
Поля nval и sval содержат числовое и строковое представление лексемы
Описание слайда:
Класс StreamTokenizer Не является потоком чтения, но позволяет обрабатывать информацию из них Содержит методы лексической обработки текста Ряд методов предназначен для настройки работы анализатора Метод nextToken() производит обработку очередной лексемы, после чего: Поле ttype содержит константу типа лексемы Поля nval и sval содержат числовое и строковое представление лексемы

Слайд 19





Группа байтовых потоков Data
Интерфейсы DataInput и DataOutput содержат объявления методов ввода и вывода значений простых типов
void writeLong(long v), void writeFloat(float v)
boolean readBoolean(), String readUTF() 
Обертки DataInputStream и DataOutputStream, соответственно, реализуют эти интерфейсы
Класс RandomAccessFile реализует оба интерфейса Data и позволяет работать с файлами в режиме произвольного доступа
Описание слайда:
Группа байтовых потоков Data Интерфейсы DataInput и DataOutput содержат объявления методов ввода и вывода значений простых типов void writeLong(long v), void writeFloat(float v) boolean readBoolean(), String readUTF() Обертки DataInputStream и DataOutputStream, соответственно, реализуют эти интерфейсы Класс RandomAccessFile реализует оба интерфейса Data и позволяет работать с файлами в режиме произвольного доступа

Слайд 20





Класс File
Инкапсулирует платформенно-независимые методы работы с файлами и директориями:
создание
проверка атрибутов
удаление
переименование
Позволяет  создавать временные файлы, удаляемые при завершении работы программы
API класса изучите самостоятельно
Описание слайда:
Класс File Инкапсулирует платформенно-независимые методы работы с файлами и директориями: создание проверка атрибутов удаление переименование Позволяет создавать временные файлы, удаляемые при завершении работы программы API класса изучите самостоятельно

Слайд 21





Группа потоков File
FileInputStream, FileReader
FileOutputStream, FileWriter
Позволяют трактовать файл как поток, предназначенный для ввода и вывода данных
Связаны с исключениями FileNotFoundException и SecurityException
Конструкторы могут получать параметры:
Строку String, задающую имя файла
Объект класса File
Объект FileDescriptor
(возвращается методом getFD() байтовых потоков)
Описание слайда:
Группа потоков File FileInputStream, FileReader FileOutputStream, FileWriter Позволяют трактовать файл как поток, предназначенный для ввода и вывода данных Связаны с исключениями FileNotFoundException и SecurityException Конструкторы могут получать параметры: Строку String, задающую имя файла Объект класса File Объект FileDescriptor (возвращается методом getFD() байтовых потоков)

Слайд 22





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

Слайд 23





Пример чтения из текстового файла и из консоли
Описание слайда:
Пример чтения из текстового файла и из консоли

Слайд 24





Пример записи в байтовый файл
Описание слайда:
Пример записи в байтовый файл

Слайд 25





Пример чтения из байтового файла
Описание слайда:
Пример чтения из байтового файла

Слайд 26





Сериализация объектов
Сериализация – процесс преобразования состояния объекта в поток байтов
Десериализация – восстановление состояния объекта из данных потока
Не все объекты могут быть сериализованы
Класс должен быть подготовлен к сериализации
Описание слайда:
Сериализация объектов Сериализация – процесс преобразования состояния объекта в поток байтов Десериализация – восстановление состояния объекта из данных потока Не все объекты могут быть сериализованы Класс должен быть подготовлен к сериализации

Слайд 27





Группа байтовых потоков Object
Класс ObjectOutputStream реализует сериализацию
Класс ObjectInputStream реализует десериализацию
Классы позволяют выводить и вводить графы объектов с сохранением структуры
Результатом десериализации является объект, равнозначный исходному
Описание слайда:
Группа байтовых потоков Object Класс ObjectOutputStream реализует сериализацию Класс ObjectInputStream реализует десериализацию Классы позволяют выводить и вводить графы объектов с сохранением структуры Результатом десериализации является объект, равнозначный исходному

Слайд 28





Пример сериализации в файл
Описание слайда:
Пример сериализации в файл

Слайд 29





Пример десериализации из файла
Описание слайда:
Пример десериализации из файла

Слайд 30





Подготовка классов к сериализации
Должен реализовываться интерфейс-маркер java.io.Serializable
Все сериализуемые поля должны иметь сериализуемый тип
Родительский класс должен иметь конструктор по умолчанию (без параметров) или быть подготовленным к сериализации
Сериализуются поля объекта, не обозначенные как transient или static
Описание слайда:
Подготовка классов к сериализации Должен реализовываться интерфейс-маркер java.io.Serializable Все сериализуемые поля должны иметь сериализуемый тип Родительский класс должен иметь конструктор по умолчанию (без параметров) или быть подготовленным к сериализации Сериализуются поля объекта, не обозначенные как transient или static

Слайд 31





Порядок сериализации и десериализации
В нисходящем порядке по древовидной иерархии типов: от первого сериализуемого класса до частного типа
Объекты, на которые ссылаются поля, сериализуются в порядке обнаружения
Перед десериализацией выполняется загрузка участвующих классов (возможен выброс исключения ClassNotFoundException)
Описание слайда:
Порядок сериализации и десериализации В нисходящем порядке по древовидной иерархии типов: от первого сериализуемого класса до частного типа Объекты, на которые ссылаются поля, сериализуются в порядке обнаружения Перед десериализацией выполняется загрузка участвующих классов (возможен выброс исключения ClassNotFoundException)

Слайд 32





Пример иерархии классов
Описание слайда:
Пример иерархии классов

Слайд 33





Порядок сериализации
Описание слайда:
Порядок сериализации

Слайд 34





Порядок десериализации
Описание слайда:
Порядок десериализации

Слайд 35





Настройка сериализации
Для изменения работы механизма сериализации на уровне вашего класса в самом классе надо описать методы:
реализация сериализации
private void writeObject(ObjectOutputStream out) throws IOException
реализация десериализации
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
Уровень доступа методов позволяет им независимо существовать в различных классах в иерархии наследования
Можно не переписывать чтение/запись полностью, а лишь изменить порядок записи полей и их формат (см. методы ObjectOutputStream.writeFields() и ObjectInputStream.readFields())
Описание слайда:
Настройка сериализации Для изменения работы механизма сериализации на уровне вашего класса в самом классе надо описать методы: реализация сериализации private void writeObject(ObjectOutputStream out) throws IOException реализация десериализации private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException Уровень доступа методов позволяет им независимо существовать в различных классах в иерархии наследования Можно не переписывать чтение/запись полностью, а лишь изменить порядок записи полей и их формат (см. методы ObjectOutputStream.writeFields() и ObjectInputStream.readFields())

Слайд 36





Контроль версий
Каждый класс имеет уникальный идентификатор номера версии – 64 битовое значение long 
По умолчанию значение рассчитывается как функция от кода класса (включая методы)
Несовпадение версий при десериализации объекта выбрасывает исключение InvalidClassException
Проблему можно обойти, явно введя в класс поле
private static final long
      serialVersionUID = ...;
Описание слайда:
Контроль версий Каждый класс имеет уникальный идентификатор номера версии – 64 битовое значение long По умолчанию значение рассчитывается как функция от кода класса (включая методы) Несовпадение версий при десериализации объекта выбрасывает исключение InvalidClassException Проблему можно обойти, явно введя в класс поле private static final long serialVersionUID = ...;

Слайд 37


Механизмы ввода и вывода, слайд №37
Описание слайда:



Похожие презентации
Mypresentation.ru
Загрузить презентацию