Главная страница

33 Java. Потоки ввода-вывода. Работа с файлами. Белорусский государственный экономический университет кафедра экономической информатики


Скачать 1.6 Mb.
НазваниеБелорусский государственный экономический университет кафедра экономической информатики
Дата06.01.2023
Размер1.6 Mb.
Формат файлаdocx
Имя файла33 Java. Потоки ввода-вывода. Работа с файлами.docx
ТипЛитература
#874813
страница8 из 13
1   ...   5   6   7   8   9   10   11   12   13

Класс BufferedInputStream


Класс BufferedInputStream накапливает вводимые данные в специальном буфере без постоянного обращения к устройству ввода. Класс BufferedInputStream определяет два конструктора:

  • BufferedInputStream(InputStream inputStream)

  • BufferedInputStream(InputStream inputStream,

int bufSize)

Первый параметр (inputStream) - это поток ввода, с которого данные будут считываться в буфер. Второй параметр - размер буфера.

Например, буферизируем считывание данных из потока

FileInputStream.
Пример.


Результат работы программы:



Класс BufferedInputStream в конструкторе принимает объект fin. В данном случае таким объектом является экземпляр класса FileInputStream.

Как и все потоки ввода BufferedInputStream обладает методом read(), который считывает данные. Соответственно здесь также считываются данные с помощью метода read().

Класс BufferedInputStream просто оптимизирует производительность при работе с потоком FileInputStream. Естественно, вместо FileInputStream может использоваться любой другой класс, который унаследован от InputStream.

Буферизация символьных потоков.


BufferedReader и BufferedWriter

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

Класс BufferedWriter имеет следующие конструкторы:

    • BufferedWriter(Writer out)

    • BufferedWriter(Writer out, int sz)

В качестве параметра каждый из конструкторов принимает поток вывода (out), в который надо осуществить запись. Второй параметр (sz) указывает на размер буфера.
Замечание.

Так как BufferedWriter потомок класса Writer, то он можетиспользоватьвсетеметодыдлячтенияизпотока,которыеопределенывReader.
Класс BufferedReader считывает текст из символьного потока ввода, буферизируя прочитанные символы. Использование буфера призвано увеличить производительность чтения данных из потока.

Класс BufferedReader имеет аналогичные конструкторы:

    • BufferedReader(Reader in)

    • BufferedReader(Reader in, int sz)


Замечание.

Так как BufferedReader наследуется от класса Reader, то онможетиспользоватьвсетеметодыдлячтенияизпотока,которыеопределенывReader,атакжеBufferedReader определяетсвойсобственныйметодreadLine(),которыйпозволяетсчитыватьизпотока построчно.
Очевидно, что применительно к записи/чтению в/из файла классы должны работать в паре:

    • FileWriter и BufferedWriter;

    • FileReader и BufferedReader.

Пример.


Результат работы программы:



1   ...   5   6   7   8   9   10   11   12   13


написать администратору сайта