Слайд 1Программирование на языках высокого уровня
Ввод-вывод в Java
Слайд 2Понятие потока данных
Данные извлекаются из источника (ввод) и пересылаются потребителю
(вывод).
сетевое соединение,
буфер памяти,
файл на диске.
Поток данных (stream) – логическая
сущность, которая потребляет или производит информацию.
Поток данных – абстрактное представление упорядоченной последовательности данных.
Поток связывается с физическим устройством.
Классы и интерфейсы языка, позволяющие работать с потоками ввода-вывода единым образом, не задумываясь о низкоуровневой организации, собраны в пакете java.io
Слайд 3Классификация потоков
Байтовые потоки используются в операциях с информацией, представленной в
двоичном (бинарном) виде.
потоки ввода (Input Streams)
потоки вывода (Output Streams)
Символьные потоки
– последовательности 16-битовых Unicode-символов.
потоки чтения (Readers)
потоки записи (Writers)
Слайд 4Основные группы классов и интерфейсов java.io
Классы общего назначения: InputStream, OutputStream
Reader, Writer (содержат важные методы read(), write())
Специализированные классы:
Для вывода значений
простых типов и строк: DataInputStream, DataOutputStream;
Для платформно-независимой обработки файловых данных: FileInputStream, FileOutputStream, FileReader, FileWriter;
Канальные потоки: PipedInputStream, PipedOutputStream, PipedReader, PipedWriter;
Фильтрованные потоки: FilterInputStream, FilterOutputStream, FilterReader, FilterWriter;
Буферизированные потоки: BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter
Потоки для преобразования символьного потока в байтовый и обратно: InputStreamReader и OutputStreamWriter
Слайд 5Буферизированные потоки
Обеспечивается присоединение к потоку буфера (области памяти) для промежуточного
хранения читаемых или записываемых данных.
Обращение к физическому устройству не происходит
при каждой операции read() или write().
Это ускоряет выполнение ввода-вывода.
Конструкторы:
с указанием размера буфера и базового потока;
с указанием только базового потока (размер буфера устанавливается по умолчанию).
Чтение:
читаются данные из буфера;
если буфер пуст, читаются порция данных с диска в буфер и повторяется первый пункт.
Запись:
данные записываются в буфер;
если буфер переполнен, все содержимое буфера записывается на диск и повторяется первый пункт.
flush() – освобождение потока.
Слайд 6Фильтрованные потоки
Позволяют применить к данным своего внутреннего потока операции предварительной
обработки (фильтрации).
Внутренним потоком фильтрованного потока (передаваемого в конструкторе) может быть
поток общего назначения
или специализированный поток,
в том числе другой фильтрованный поток (многошаговая фильтрация).
Классы Filter*** - абстрактные: для использования фильтрации необходимо наследовать выбранный класс и переопределить его метод read() или write().
Слайд 7Канальные потоки
Позволяют связывать входные и выходные потоки.
Используются парами, пара потоков
(чтения и записи или ввода и вывода) называется каналом.
Данные,
переданные в один поток (выходной), являются входными для другого.
Между двумя потоками канала предусмотрен буфер (размер задается автоматически).
Используются для обмена данными между разными потоками вычислений.
Слайд 8Сериализация
Сериализация – преобразование объекта в последовательность данных (байтов)
Десериализация – восстановление
объекта из последовательности байтов.
Класс сериализуемого/десериализуемого объекта должен реализовывать интерфейс Serializable
Классы:
ObjectOutputStream, ObjectInputStream содержат методы
void writeObject(Serializable s)
Serializable readObject()
Слайд 9Класс File
Предназначен для получения и управления информацией, связанной с файлом
на диске:
права доступа;
время и дата создания и изменения;
путь в иерархии
каталогов и т.д.
Каталог в java – тоже объект класса File, для которого можно просматривать список содержимого
Все содержимое: String[] list()
Файлы и каталоги, отобранные по некоторому критерию – фильтру:
String[] list(FilenameFilter f)
FilenameFilter – интерфейс, содержащий метод accept(File f, String s)
Поддерживается интерфейс Comparable