Книга е още в много ранна фаза на написване



страница58/73
Дата25.07.2016
Размер13.53 Mb.
#6732
1   ...   54   55   56   57   58   59   60   61   ...   73

Вход и изход


Библиотечните класове IO на Java са разделени за вход и изхад, както може да ви­дите с вашия броузър от йерархията онлайн на класовете на Java. По на­след­ство всичките класове извлечени от InputStream имат основни методи на­ре­че­ни read( ) за четене на единствен байт или масив от байтове. Подобно, всички кла­сове наследени от OutputStream имат основни методи наречени write( ) за че­­тене на единствен байт или масив от байтове. Обаче общо взето няма да из­полз­вате тези методи; те съществуват за да може по-усложнените класове да ги из­ползуват, като се осигурява по-удобен интерфейс. Така рядко ще създавате по­токов обект чрез използване на един само клас, а ще слагате няколко обекта заед­но за да се постигне желаната функционалност. Фактът че използвате ня­кол­ко класа за създаване на обект за един поток е основната причина по­то­ко­ва­та библиотека на Java да смущава.

Полезно е да се категоризират класовете по тяхната функционалност. Проек­тан­тите са започнали с мисълта че всичко което ще има работа с входа ще се на­следява от InputStream и всичко за изход — от OutputStream.


Типове на InputStream


Задачата на InputStream е да представи класовете които въвеждат от различни източници. Източниците могат да бъдат (и всеки има асоцииран подклас на InputStream):

  1. Масив от битове

  2. String обект

  3. Файл

  4. “тръба,” която работи като физически съществуваща тръба: слагате неща от едната страна и те излизат от другата

  5. Последователност от други потоци, така че да може да ги съберете в един по­ток

  6. Други източници, такива като Internet връзка. (Този ще бъде разискван в по-късна глава.)

Освен това, FilterInputStream е също тип InputStream, за да даде базов клас за "декориращи" класове които закачат атрибути или полезни интерфейси на вхо­ден поток. Това е дискутирано по-нататък.

Table 10-1. Типове InputStream

Клас

Функция

Аргументи на конструктора

Как да се използва

ByteArray-InputStream

Позволява буфер в паметта да се използва като InputStream.

Буфер от който да се извлекат байтовете.

Като източник на данни. Свържете го с FilterInputStream обект за да имате полезен интерфейс.

StringBuffer-InputStream

Превръща String в InputStream.

String. Подлежащата реализация фактически използва StringBuffer.

Като източник на данни. Свържете го към FilterInputStream обект за да даде полезен интерфейс.

File-InputStream

За четене на информация от файл.

String представящ файловото име или File или FileDescriptor обект.

Като източник на данни. Свържете го към FilterInputStream обект за да даде полезен интерфейс.



Piped-InputStream

Дава данните които са били написани в PipedOutput-Stream. Реализира концепцията за “piping”.

PipedOutputStream

Като източник на данни при многонишковост. Свържете го с FilterInputStream обект за да даде полезен интерфейс.

Sequence-InputStream

Превръща два или повече InputStream обекта в единствен InputStream.

Два InputStream обекта или Enumeration за контейнер от InputStream обекти.

Като източник на данни. Свържете го с FilterInputStream обект за да даде полезен интерфейс.

Filter-InputStream

Абстракнет клас който служи като интерфейс към декоратори, които дават полезни черти на InputStream класовете. Вж. Табл. 10-3.

Вж. Табл. 10-3.

Вж. Табл. 10-3.

Типове OutputStream


Тази категория съдържа класове които решават къде ще ходят вашите данни: масив от байтове (не String, обаче; предполагаемо може да създадете такъв от масив от байтове), файл или “тръба.”

Освен това обектът FilterOutputStream дава базов клас за "декориращи" класове които задават атрибути или полезна функционалност на изходните потоци. Това се дискутира по-късно.



Таблица 10-2. Типове OutputStream

Клас

Функция

Аргументи на конструктора

Как да се използва

ByteArray-OutputStream

Създава буфер в паментта. Всички данни които изпращате към потока се слагат в този буфер.

Опционна дължина на буфера

Определя направление за данните ви. Свържете го с FilterOutputStream обект за полезен интерфейс.

File-OutputStream

За изпращане на информация във файл.

String представящ името на файла или File или FileDescriptor обект.

Определя направление за данните ви. Свържете го с FilterOutputStream обект за полезен интерфейс.

Piped-OutputStream

Всяка информация записана тук се оказва вход за асоциирания PipedInput-Stream. Реализира “тръбната” концепция.

PipedInputStream

Определя направление за данните ви при многонишковост. Свържете го с FilterOutputStream обект за полезен интерфейс.

Filter-OutputStream

Абстрактен клас който е интерфейс към декоратори, които дават полезни черти на OutputStream класовете. Виж Таблица 10-4.

Виж Таблица 10-4.

Виж Таблица 10-4.



Сподели с приятели:
1   ...   54   55   56   57   58   59   60   61   ...   73




©obuch.info 2024
отнасят до администрацията

    Начална страница