
- •Понятие потока данных в Java. Типы потоков.
- •Общая схема записи данных в поток и чтения данных из потока.
- •Байтовый поток: свойства, связь потока с файлом, чтение и запись, закрытие.
- •Потоки символов: свойства, связь потока с файлом, чтение и запись, закрытие.
- •Поток строк: свойства, связь потока с файлов, чтение и запись, закрытие.
- •Исключения при работе с потоками.
- •Понятие рекурсии. Рекурсивное вычисление факториала.
- •Понятие рекурсии. Рекурсивное вычисление суммы элементов массива.
- •Понятие рекурсии. Рекурсивное вычисление максимума в массиве.
- •Формулировка задачи о Ханойских башнях.
- •Применение рекурсии при определении связного списка.
- •Понятие списка. Объявление элемента списка.
- •Структура объявления элемента двусвязного списка.
- •Типовые операции для односвязных списков.
- •Кольцевой и двусвязный списки: отличия от односвязного списка.
- •Порядок добавление элемента в односвязный список.
- •Рекурсивный и итерационный метод обработки списка (на примере печати списка)
- •Коллекции: множества – основные элементы интерфейса Set.
- •Структура простейшего гип-приложения.
- •Цвет в гип. Конструкторы и цветовые константы класса.
- •Кнопка. Состояние кнопки. События кнопки, их обработка и идентификация.
- •Структура программы, имеющей интерфейс с двумя кнопками.
- •Элемент интерфейса «условие» («флажок»), его конструкторы и обработка событий.
- •Элемент интерфейса «радиокнопка», его конструкторы и обработка событий радиокнопок.
Понятие потока данных в Java. Типы потоков.
Понятие:
При работе с данными ввода/вывода вам будет часто попадаться термин Поток (Stream). Поток - это абстрактное значение источника или приёмника данных, которые способны обрабатывать информацию. Вы в реальности не видите, как действительно идёт обработка данных в устройствах ввода/вывода, так как это сложно и вам это не нужно. Это как с телевизором - вы не знаете, как сигнал из кабеля превращается в картинку на экране, но вполне можете переключаться между каналами через пульт.
Есть два типа потоков: байтовые и символьные. В некоторых ситуациях символьные потоки более эффективны, чем байтовые.
За ввод и вывод отвечают разные классы Java. Классы, производные от базовых классов InputStream или Reader, имеют методы с именами read() для чтения отдельных байтов или массива байтов (отвечают за ввод данных). Классы, производные от классов OutputStream или Write, имеют методы с именами write() для записи одиночных байтов или массива байтов (отвечают за вывод данных).
Типы потоков:
Потоки обеспечивают последовательный ввод/вывод данных. В Java два типа потоков:
InputStream, OutputStream - байтовые потоки ввода и вывода;
Reader, Writer - символьные потоки ввода и вывода.
Список расширенных и специализированных потоков ввода/вывода:
BufferedInputStream/BufferedOutputStream - обертка на потоки ввода/вывода с поддержкой буферизации данных;
BufferedReader/BufferedWriter - обертка на символьные потоки ввода/вывода с поддержкой буферизации данных;
FileInputStream/FileOutputStream - файловые потоки ввода/вывода;
FileReader/FileWriter - потоки ввода/вывода для текстовых файлов;
PrintStream/PrintWriter - потоки для форматированного ввода/вывода;
ByteArrayInputStream/ByteArrayOutputStream - байтовые потоки ввода/вывода;
StringReader/StringWriter - символьные потоки ввода/вывода использующие строку в качестве источника;
CharArrayReader/CharArrayWriter - символьные потоки ввода/вывода использующие массив символов в качестве источника;
DataOutputStream/DataInputStream - обертка дла потоков ввода/вывода с подержкой стандартных java типов. В некоторых случаях удобней записывать примитивные данные типа double, чем иметь дело просто с бинарным или текстовым файлом. Юникодные строки обрабатываются в формате немного отличном от utf-8;
FilterInputStream/FilterOutputStream - базовые классы для оберток потоков ввода/вывода с фильтрацией данных, сами эти классы не фильтруют данных;
FilterReader/FilterWriter - базовые классы для оберток символьных потоков ввода/вывода с фильтрацией данных, сами эти классы не фильтруют данных;
StreamTokenizer - обертка для символьных потоков ввода, c поддержкой разбора слов, чисел и комментариев в стиле С/С++.
Общая схема записи данных в поток и чтения данных из потока.
Байтовый поток: свойства, связь потока с файлом, чтение и запись, закрытие.
Классы байтовых потоков
Байтовые потоки определяются в двух иерархиях классов. Наверху этой иерархии — два абстрактных класса: InputStream и OutputStream. Каждый из этих абстрактных классов имеет несколько конкретных подклассов , которые обрабатывают различия между разными устройствами, такими, как дисковые файлы, сетевые соединения и даже буферы памяти.
Абстрактные классы InputStream и OutputStream определяют несколько ключевых методов, которые реализуются другими поточными классами. Два наиболее важных— read() и write(), которые соответственно читают и записывают байты данных. Оба метода объявлены как абстрактные внутри
классов InputStream и OutputStream и переопределяются производными поточными классами.
Поточный класс |
Назначение |
InputStream OutputStream |
Абстрактные классы, которые описывают поточный ввод и вывод |
BufferedInputStream BufferedOutputStream |
Буферизированный поток ввода и вывода |
ByteArrayOutputStream |
Поток ввода, который читает из байт-массива Поток вывода, который записывает в байт-массив |
FileInputStream FileOutputStream |
Поток ввода, который читает из файла Поток вывода, который записывает в файл |
RandomAccessFile |
Поддерживает ввод/вывод файла произвольного доступа |