Абстрактный класс OutputStream 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Абстрактный класс OutputStream



 

Абстрактный класс OutputStream во многом аналогичен классу InputStream; он предлагает модель вывода байтовых данных в объект - получатель. Методы класса OutputStream перечислены ниже.

· public abstract void write(int b) throws IOException
Выводит значение b в виде байта. В качестве параметра передаётся именно int, поскольку значение часто является результатом выполнения арифметических операций над аргументами byte. Выражение, операнды которого относятся к типу byte, обладает типом int, поэтому объявление параметра в виде int означает возможность избежать необходимости использования операций явного преобразования результатов вычисления выражения к типу byte. Следует заметить, однако, что выводится только 8 младших битов результат типа int public void write(byte[] buf, int offset, int count) throws IOException
Выводит count байтов массива buf, начиная с элемента buf[offset]

· public void write(byte[] buf) throws IOException
Метод аналогичен предыдущему при условии write(buf, 0, buf.length)

· public void flush() throws IOException
Осуществляет сброс потока. Единственный вызов flush приводит к сбросу всех буферов в цепочке взаимосвязанных потоков. Если поток не относится к категории буферизированных, реализация метода, предлагаемая по умолчанию, не предусматривает выполнения каких бы то ни было действий

· public void close() throws IOException
Закрывает ранее открытый поток вывода. Метод используется для высвобождения ресурсов, связанных с потоком. Любые попытки обращения к закрытому потоку приводят к выбрасыванию исключения типа IOException, но повторное закрытие потока эффектов не вызывает. В реализации метода, предлагаемой по умолчанию, никакие действия не предусмотрены

При реализации OutputStream требуется, чтобы производный класс обеспечил практическое воплощение варианта метода write(), осуществляющего вывод единственного байта, поскольку остальные версии write основываются на первой.

 

Символьные потоки

 

Абстрактными классами, обеспечивающими чтение и запись символьных потоков, являются Reader и Writer. В каждом из них предусмотрены методы, схожие с «собратьями» из состава классов, представляющих байтовые потоки.

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

 

Абстрактный класс Reader

 

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

· public int read() throws IOException
Считывает один символ данных и возвращает его в виде целого числа из диапазона от 0 до 65535. Если символов, готовых для чтения, не существует ввиду достижения конца потока, возвращается значение -1. Метод выполняет блокировку до тех пор, пока имеются доступные для чтения символы, не достигнут конец потока либо не выброшено исключение

· public abstract int read(char[] buf, int offset, int count)
throws IOException
Считывает символы и сохраняет их в части массива buf, максимальное количество символов, подлежащих чтению, определяется значением count (если 0 – чтение не производится и возвращается 0). Символы заносятся в элементы массива, начиная с buf[offset] и до buf[offset+count-1]. Метод возвращает количество фактически считанных символов. Если ввиду достижения конца потока не считан ни один символ, возвращается -1. Если первый символ не может быть считан по причине, не связанной с достижением конца потока (например, поток уже закрыт), выбрасывается исключение типа IOException

· public int read(char[] buf) throws IOException
Метод аналогичен предыдущему при условии read(buf, 0, buf.length)

· public long skip(long count) throws IOException
Пропускает, самое большее, count символов либо часть последовательности символов до конца потока. Возвращает количество фактически пропущенных символов. Значение count не должно быть отрицательным

· public boolean ready() throws IOException
Возвращает true, если поток готов для чтения данных, т.е. в нём существует хотя бы один доступный символ. Результат, равный false, не свидетельствует о том, что очередной вызов read приведёт к возникновению блокировки, поскольку в промежутке между обращениями к ready и read в поток может поступить очередная порция данных

· public abstract void close() throws IOException
Закрывает ранее открытый поток чтения. Метод используется для высвобождения ресурсов, связанных с потоком. Любые попытки обращения к закрытому потоку приводят к выбрасыванию исключения типа IOException, но повторное закрытие потока эффектов не вызывает

 

При реализации Reader требуется, чтобы производный класс обеспечил практическое воплощение варианта метода read(), осуществляющего чтение данных в массив символов, и версии метода close(). Во многих случаях, однако, производительность операций может быть улучшена за счёт переопределения и других методов.

 

 



Поделиться:


Последнее изменение этой страницы: 2021-05-11; просмотров: 47; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.239.123 (0.004 с.)