Класс BufferedOutputStream
Класс BufferedOutputStream создает буфер для потоков вывода. Этот буфер накапливает выводимые байты без постоянного обращения к устройству. И когда буфер заполнен, производится запись данных.
BufferedOutputStream определяет два конструктора:
BufferedOutputStream(OutputStream outputStream)
BufferedOutputStream(OutputStream outputStream,
int bufSize)
Первый параметр (outputStream) - это поток вывода, который унаследован от OutputStream, а второй параметр - размер буфера.
Рассмотрим на примере записи в файл.
Пример.
Результат работы программы:
Класс BufferedOutputStream в конструкторе принимает в качестве параметра объект OutputStream - в данном случае это файловый поток вывода FileOutputStream. И также производится запись в файл. Опять же BufferedOutputStream не добавляет много новой функциональности, он просто оптимизирует действия потока вывода. Дадим пояснения по использованному в примере методу void write(byte[] buf, int off, int len). Он записывает len байт из массива байтов buf, начиная со смещения off, в буферизованный выходной поток. Обычно этот метод сохраняет байты из данного массива в буфер потока, при необходимости сбрасывая буфер в базовый выходной поток. Однако если запрошенная длина больше либо равна размеру буфера потока, то этот метод очищает буфер и записывает
байты непосредственно в базовый выходной поток.
Класс BufferedInputStream
Класс BufferedInputStream накапливает вводимые данные в специальном буфере без постоянного обращения к устройству ввода. Класс BufferedInputStream определяет два конструктора:
BufferedInputStream(InputStream inputStream)
BufferedInputStream(InputStream inputStream,
int bufSize)
Первый параметр (inputStream) - это поток ввода, с которого данные будут считываться в буфер. Второй параметр - размер буфера.
Например, буферизируем считывание данных из потока
FileInputStream.
Пример.
Результат работы программы:
Класс BufferedInputStream в конструкторе принимает объект fin. В данном случае таким объектом является экземпляр класса FileInputStream.
Как и все потоки ввода BufferedInputStream обладает методом read(), который считывает данные. Соответственно здесь также считываются данные с помощью метода read().
Класс BufferedInputStream просто оптимизирует производительность при работе с потоком FileInputStream.
Естественно, вместо FileInputStream может использоваться любой другой класс, который унаследован от InputStream.
Достарыңызбен бөлісу: |