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