Как обычно, я постараюсь привести общий обзор этих классов, но за полными описаниями и списками методов каждого класса следует обращаться к документации JDK.

Типы InputStream

Назначение базового класса InputStream — представлять классы, которые получают данные из различных источников. Такими источниками могут быть:

• массив байтов;

• строка (String);

• файл;

• «канал» (pipe): данные помещаются с одного «конца» и извлекаются с другого;

• последовательность различных потоков, которые можно объединить в одном потоке;

• другие источники (например, подключение к Интернету).

С каждым из перечисленных источников связывается некоторый подкласс базового класса InputStream (табл. 16.1). Существует еще класс FilterlnputStream, который также является производным классом InputStream и представляет собой основу для классов-«надстроек», наделяющих входные потоки полезными свойствами и интерфейами. Его мы обсудим чуть позже.

Таблица 16.1. Разновидности входных потоков InputStream

Класс Назначение Аргументы конструктора,

порядок применения

Позволяет использовать буфер в памяти (массив байтов) в качестве источника данных для входного потока

ByteArraylnputStream

StringBufferlnputStream

FilelnputStream

PipedlnputStream

SequencelnputStream

FilterlnputStream

Превращает строку (String) во входной поток данных InputStream

Для чтения информации из файла

Производит данные, записываемые в соответствующий выходной поток PipedOutputStream. Реализует понятие канала

Сливает два или более потока InputStream в единый поток

Абстрактный класс, предоставляющий интерфейс для классов-надстроек, которые добавляют к существующим потокам полезные свойства

Буфер, из которого читаются байты. Как источник данных. Присоедините поток к классу FilterlnputStream, чтобы получить расширенные возможности

Строка. Лежащая в основе класса реализация на самом деле использует класс StringBuffer. Как источник данных. Присоедините поток к классу FilterlnputStream, чтобы получить расширенные возможности

Строка (String) с именем файла или объекты File и FileDescriptor. Как источник данных. Присоедините поток к классу FilterlnputStream, чтобы получить расширенные возможности

Объект PipedOutputStream. Как источник данных в многозадачном окружении. Присоедините поток к классу FilterlnputStream, чтобы получить расширенные возможности Два объекта-потока InputStream или перечисление Enumeration для контейнера, в котором содержатся все потоки.

Как источник данных. Присоедините поток к классу FilterlnputStream, чтобы получить расширенные возможности См. табл. 16.3

Типы OutputStream

В данную категорию (табл. 16.2) попадают классы, определяющие, куда направляются ваши данные: в массив байтов (но не напрямую в String; предполагается, что вы сможете создать их из массива байтов), в файл или в канал.

Вдобавок класс FilterOutputStream предоставляет базовый класс для клас-сов-«надстроек», которые способны наделять существующие потоки новыми полезными атрибутами и интерфейсами. Подробности мы отложим на потом.

Таблица 16.2. Разновидности выходных потоков OutputStream

Аргументы конструктора, порядок применения

Класс

Назначение

ByteArrayOutputStream Создает буфер в памяти. Все

данные, посылаемые в этот поток, размещаются в созданном буфере

FileOutputStream

PipedOutputStream

Перейти на страницу:

Похожие книги