Содержание
- 2. План лекции Потоки данных и их виды Иерархия и разновидности потоков данных Понятие сериализации Особенности сериализации
- 3. Традиционно, проблемы! Система ввода/вывода не должна зависеть от платформы! Применяется модель потоков данных: упорядоченная последовательность данных,
- 4. Разновидности потоков Потоки ввода Потоки вывода Потоки чтения Потоки записи Ввод Вывод Байтовые Символьные
- 5. Структура пакета java.io Типы общего назначения Классы разновидностей потоков Специализированные классы и интерфейсы для ввода и
- 6. InputStream OutputStream Reader Writer Разновидности потоков Потоки ввода Потоки вывода Потоки чтения Потоки записи Ввод Вывод
- 7. Класс InputStream abstract int read() throws IOException int read(byte[] b, int off, int len) throws IOException
- 8. Класс OutputStream abstract void write(int b) throws IOException void write(byte[] b, int off, int len) throws
- 9. Класс Reader int read() throws IOException abstract int read(char[] b, int off, int len) throws IOException
- 10. Класс Writer void write(int ch) throws IOException abstract void write(char[] b, int off, int len) throws
- 11. Занятная особенность Уже знакомые потоки: System.out System.in System.err Какого они типа? Байтового!!! (для совместимости с версиями
- 12. Классы потоков ввода и вывода Образуют 4 иерархии, в основе которых лежат базовые абстрактные классы Имя
- 13. Иерархия байтовых потоков
- 14. Иерархия символьных потоков
- 15. Классы-трансляторы Позволяют читать из байтового как из символьного и записывать в байтовый поток как в символьный
- 16. Группа потоков Filter FilterInputStream, FilterReader FilterOutputStream, FiltrerWriter Обертки, позволяют объединять потоки в цепочки для получения сложных
- 17. Группа потоков Buffered BufferedInputStream, BufferedReader BufferedOutputStream, BufferedWriter Обертки, осуществляют буферизацию данных на программном уровне Размер буфера
- 18. Группа потоков Piped PipedInputStream, PipedReader PipedOutputStream, PipedWriter Используются в виде пар ввода-вывода Данные, переданные в поток
- 19. Группа байтовых потоков ByteArray ByteArrayInputStream, ByteArrayOutputStream В качестве источника и получателя данных используются массивы байт В
- 20. Группы символьных потоков CharArray и String CharArrayReader и CharArrayWriter аналогичны ByteArrayInputStream и ByteArrayOutputStream, но оперируют с
- 21. Группа потоков Print Обертки PrintStream и PrintWriter содержат методы, упрощающие задачу вывода данных простых типов в
- 22. Класс StreamTokenizer Не является потоком чтения, но позволяет обрабатывать информацию из них Содержит методы лексической обработки
- 23. Группа байтовых потоков Data Интерфейсы DataInput и DataOutput содержат объявления методов ввода и вывода значений простых
- 24. Класс File Инкапсулирует платформенно-независимые методы работы с файлами и директориями: создание проверка атрибутов удаление переименование Позволяет
- 25. Группа потоков File FileInputStream, FileReader FileOutputStream, FileWriter Позволяют трактовать файл как поток, предназначенный для ввода и
- 26. Пример записи в текстовый файл import java.io.*; public class TextWrite { public static void main(String[] args)
- 27. Пример записи в байтовый файл import java.io.*; public class ByteWrite { public static void main(String[] args)
- 28. Пример чтения из текстового файла и из консоли import java.io.*; public class TextRead { public static
- 29. Пример чтения из байтового файла import java.io.*; public class ByteRead { public static void main(String[] args)
- 30. Форматированные ввод и вывод (Java 5) java.util.Formatter Обеспечивает преобразования формата, позволяющие выводить числа, строки, время и
- 31. java.util.Formatter Конструкторы Имеет множество конструкторов, позволяющих задать следующие параметры (либо, если они не заданы, использовать значения
- 32. java.util.Formatter Важные методы Formatter format(String fmtString, Object ... args) Форматирует указанные аргументы в соответствии со строкой
- 33. java.util.Formatter Важные методы IOException ioException() Возвращает объект исключения, генерируемый объектом-приемником, иначе null Appendable out() Возвращает ссылку
- 34. java.util.Formatter Важные методы String toString() Возвращает объект типа String, содержащий отформатированный вывод void flush() Переносит информацию
- 35. Строка форматирования Строка форматирования состоит из: простых символов Просто копируются в вывод спецификаторов формата Определяют способ
- 36. Преобразующие спецификаторы формата
- 37. Возможности форматирования Порядковый номер аргумента Позволяет использовать не текущий аргумент, а заданный Относительный номер Позволяет несколько
- 38. Возможности форматирования Управление регистром вывода Сложное форматирование времени и даты Задание минимальной ширины поля fmt.format("Some %s",
- 39. Возможности форматирования Задание точности вывода для вещественных значений Выравнивание вывода Разделение групп цифр и т.д. fmt.format("%10.2f
- 40. Метод printf() Использует автоматически создаваемый экземпляр класса Formatter Объявлен в классах: java.io.PrintWriter java.io.PrintStream Имеет такие же
- 41. Сериализация объектов Сериализация – преобразование состояния объекта в поток байтов Десериализация – восстановление состояния объекта из
- 42. Группа байтовых потоков Object Класс ObjectOutputStream реализует сериализацию Класс ObjectInputStream реализует десериализацию Классы позволяют выводить и
- 43. Пример сериализации в файл import java.io.*; public class SerializationWrite { public static void main(String[] args) {
- 44. Пример десериализации из файла import java.io.*; public class SerializationRead { public static void main(String[] args) {
- 45. Подготовка классов к сериализации Должен реализовываться интерфейс-маркер java.io.Serializable Все сериализуемые поля должны иметь сериализуемый тип Родительский
- 46. Порядок сериализации и десериализации В нисходящем порядке по древовидной иерархии типов: от первого сериализуемого класса до
- 47. Пример иерархии классов class Class1 extends Object { private int state1 = 1; } class Class2
- 48. Порядок сериализации Object Class1 Class2 Class3 Serializable Object Class1 Class2 Class3 state1 state21 state22 state3 Сериализованное
- 49. Порядок десериализации Object Class1 Class2 Class3 Serializable Object Class1 Class2 Class3 state1 state21 state22 state3 Сериализованное
- 50. Настройка сериализации Для изменения работы механизма сериализации на уровне вашего класса в самом классе надо описать
- 51. Контроль версий Каждый класс имеет уникальный идентификатор номера версии – 64 битовое значение long По умолчанию
- 52. Интерфейс Externalizable «Ручная» сериализация: реализация сериализации public void writeExternal(ObjectOutputStream out) throws IOException реализация десериализации private void
- 53. Спасибо за внимание!
- 55. Скачать презентацию