Стандартні типи потоків

Як видно з рис 111, в пакеті javaio визначаються кілька типів потоків Зазвичай вони складають пари введення / виводу:

Конвеєрні потоки Piped спроектовані для парного використання, при якому байти, що записуються в PipedOutputStream, можуть читатися з PipedInputStream

Байтові потоки ByteArray здійснюють введення / висновок в масив байтів

Фільтруючі потоки Filtered являють собою абстрактні класи байтових потоків, в яких з читаються байтами виконуються деякі операції-фільтри Обєкт FilterInputStream отримує введення від іншого обєкта InputStream, деяким чином обробляє (фільтрує) байти і повертає результат Фільтруючі потоки можуть обєднуватися в послідовності, при цьому кілька фільтрів перетворюються на один наскрізний фільтр Аналогічним

чином здійснюється і фільтрація виводу – для цього застосовуються

різні класи Filter OutputStream

Буферизованная потоки Buffered розширюють поняття фільтруючих потоків, додаючи буферизацію, щоб при кожному виклику read і write не доводилося звертатися до файлової системи

Потоки даних Data поділяються на дві категорії Інтерфейси Data Input і DataOutput визначають методи для читання і запису даних вбудованих типів, причому висновок одного з них сприймається як введення іншого Ці інтерфейси реалізуються класами DataInputStream і Data OutputStream

Файлові потоки File розширюють поняття фільтруючих потоків – байтовий потік в них повязується з певним файлом У них вбудовані деякі методи, що відносяться до роботи з файлами

У пакет також входить ряд потоків введення (висновку), для яких відсутні парні їм потоки виводу (введення):

Потік SequenceInputStream перетворює послідовність обєктів InputStream в один загальний InputStream, завдяки чому кілька обєднаних вхідних потоків можуть розглядатися у вигляді єдиного вхідного потоку

StringBufferInputStream використовує обєкт StringBuffer в якості вхідного потоку

LineNumberInputStream розширює FilterInputStream і стежить за нумерацією рядків вхідного потоку

PushbackInputStream розширює FilterInputStream, додаючи можливість відкоту на один байт, що виявляється корисним при скануванні і синтаксичному аналізі вхідного потоку

PrintStream розширює OutputStream і включає методи print і println для форматування даних на виведенні До цього типу належать потоки Systemout і Sy stemerr

Крім зазначених вище типів, є ще кілька корисних класів введення / виводу:

Клас File (не плутати з потоковим класом File) Призначений для роботи з іменами та шляхами файлів в локальній файловій системі Він включає роздільники для компонентів шляху, локальний роздільник-суфікс і ряд корисних методів для роботи з іменами файлів

RandomAccessFile дозволяє працювати з файлами на рівні потоків з довільним доступом Він реалізує інтерфейси DataInput і Data Output, а також більшість методів введення / виведення класів Input Stream і OutputStream

Клас StreamTokenizer розбиває InputStream на окремі лексеми Він являє вхідний потік у вигляді зрозумілих слів, що часто буває необхідно при синтаксичному аналізі введених користувачем виразів

Всі ці класи можуть розширюватися і породжувати нові різновиди потокових класів,

призначені для конкретних програм

Джерело: Арнольд К, Гослінг Д – Мова програмування Java (1997)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*