Ревью 5. Что такое потоки вводавывода Как это реализовано в Java 3 Классынадстройки потоков вводавывода 4
Скачать 110.73 Kb.
|
Что такое «каналы»?Каналы (channels) – это логические (не физические) порталы, абстракции объектов более низкого уровня файловой системы (например, отображенные в памяти файлы и блокировки файлов), через которые осуществляется ввод/вывод данных, а буферы являются источниками или приёмниками этих переданных данных. При организации вывода, данные, которые необходимо отправить, помещаются в буфер, который затем передается в канал. При вводе, данные из канала помещаются в заранее предоставленный буфер. Каналы напоминают трубопроводы, по которым эффективно транспортируются данные между буферами байтов и сущностями по ту сторону каналов. Каналы – это шлюзы, которые позволяют получить доступ к сервисам ввода/вывода операционной системы с минимальными накладными расходами, а буферы – внутренние конечные точки этих шлюзов, используемые для передачи и приема данных. Какие подклассы класса InputStream вы знаете, для чего они предназначены?InputStream - абстрактный класс, описывающий поток ввода; BufferedInputStream - буферизованный входной поток; ByteArrayInputStream позволяет использовать буфер в памяти (массив байтов) в качестве источника данных для входного потока; DataInputStream - входной поток для байтовых данных, включающий методы для чтения стандартных типов данных Java; FileInputStream - входной поток для чтения информации из файла; FilterInputStream - абстрактный класс, предоставляющий интерфейс для классов-надстроек, которые добавляют к существующим потокам полезные свойства; ObjectInputStream - входной поток для объектов; StringBufferInputStream превращает строку (String) во входной поток данных InputStream; PipedInputStream реализует понятие входного канала; PushbackInputStream - разновидность буферизации, обеспечивающая чтение байта с последующим его возвратом в поток, позволяет «заглянуть» во входной поток и увидеть, что оттуда поступит в следующий момент, не извлекая информации. SequenceInputStream используется для слияния двух или более потоков InputStream в единый. Для чего используется PushbackInputStream?Разновидность буферизации, обеспечивающая чтение байта с последующим его возвратом в поток. Класс PushbackInputStream представляет механизм «заглянуть» во входной поток и увидеть, что оттуда поступит в следующий момент, не извлекая информации. У класса есть дополнительный метод unread(). Для чего используется SequenceInputStream?Класс SequenceInputStream позволяет сливать вместе несколько экземпляров класса InputStream. Конструктор принимает в качестве аргумента либо пару объектов класса InputStream, либо интерфейс Enumeration. Во время работы класс выполняет запросы на чтение из первого объекта класса InputStream и до конца, а затем переключается на второй. При использовании интерфейса работа продолжится по всем объектам класса InputStream. По достижении конца, связанный с ним поток закрывается. Закрытие потока, созданного объектом класса SequenceInputStream, приводит к закрытию всех открытых потоков. Какой класс позволяет читать данные из входного байтового потока в формате примитивных типов данных?Класс DataInputStream представляет поток ввода и предназначен для записи данных примитивных типов, таких, как int, double и т.д. Для каждого примитивного типа определен свой метод для считывания: boolean readBoolean(): считывает из потока булевое однобайтовое значение byte readByte(): считывает из потока 1 байт char readChar(): считывает из потока значение char double readDouble(): считывает из потока 8-байтовое значение double float readFloat(): считывает из потока 4-байтовое значение float int readInt(): считывает из потока целочисленное значение int long readLong(): считывает из потока значение long short readShort(): считывает значение short String readUTF(): считывает из потока строку в кодировке UTF-8 Какие подклассы класса OutputStream вы знаете, для чего они предназначены?OutputStream - это абстрактный класс, определяющий потоковый байтовый вывод; BufferedOutputStream - буферизированный выходной поток; ByteArrayOutputStream - все данные, посылаемые в этот поток, размещаются в предварительно созданном буфере; DataOutputStream - выходной поток байт, включающий методы для записи стандартных типов данных Java; FileOutputStream - запись данных в файл на физическом носителе; FilterOutputStream - абстрактный класс, предоставляющий интерфейс для классов-надстроек, которые добавляют к существующим потокам полезные свойства; PrintStream - выходной поток, включающий методы print() и println(); ObjectOutputStream - выходной поток для записи объектов; PipedOutputStream реализует понятие выходного канала. |