Клас OutputStream

Абстрактний клас OutputStream в багатьох відношеннях нагадує InputStream він абстрагує потік байтів, що спрямовуються в приймач Клас містить наступні методи:

public OutputStream()

містить тільки безаргументний конструктор public abstract void write(int b) throws IOException

Записує в потік байт b Байт передається у вигляді значення int, оскільки він часто є результатом арифметичної операції над байтами Вирази, в яких входять дані типу byte, мають тип int, так що параметр типу int дозволяє використовувати результат без перетворення в byte Проте зверніть увагу на те, що передаються тільки молодші 8 біт значення int – старші 24 біта при цьому втрачаються Метод блокує роботу програми до завершення запису байта

public void write(byte[] buf) throws IOException

Записує в потік вміст масиву байтів Метод блокує роботу програми до завершення запису

public void write(byte[] buf, int offset, int len)  throws       IOException

Записує в потік частина масиву байтів, яка починається з buf [offset] і налічує до count байтів, якщо що раніше не буде зустрінутий кінець масиву

public void flush() throws IOException

Очищає потік, тобто направляє в нього всі байти, що знаходяться в буфері public void close() throws IOException

Закриває потік Метод повинен викликатися для звільнення будь-яких ресурсів,

повязаних з потоком

Якщо явно не вказується противне, то при виявленні помилки у вихідному потоці всі ці методи збуджують виняток IOException

Нижче наводиться додаток, що копіює свій вхідний потік у вихідний і попутно заменяющее деякі символи Додаток Translate отримує два параметри: рядок from і рядок to Якщо у вхідному потоці зустрічається символ, що входить в рядок from, він замінюється символом рядка to, що знаходяться в тій же позиції:

import javaio*

class Translate {

public static void main(String[] args) { InputStream in = Systemin OutputStream out = Systemout

if (argslength = 2)

error (&quotmust provide from/to arguments&quot)

String from = args[0], to = args[1]

int ch, i

if (fromlength() = tolength())

error (&quotfrom and to must be same length&quot)

try {

while ((ch = inread()) = 1) {

if ((i = fromindexOf(ch)) = -1)

outwrite(tocharAt(i))

else

}

outwrite(ch)

} catch (IOException e) {

error (&quotI/O Exception: &quot + e)

}

}

public static void error (String err) {Systemerrprint (Translate: + err) Systemexit (1) / / Ненульове значення означає

/ / Неблагополучне завершення

}

}

Вправа 111

Перепишіть наведену вище програму Translate у вигляді методу, який пересилає символи з InputStream в OutputStream, а метод трансляції (правило заміни символів) і потоки є параметрами Для кожного типу InputStream і OutputStream, про

які йшлося в цьому розділі, напишіть новий метод main, в якому б враховувалась можливість трансляції символів при введенні або виведенні Якщо потоки введення і виведення виявляються симетричними, то для них може застосовуватися загальний метод main

Джерело: Арнольд К, Гослінг Д – Мова програмування 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>

*

*