На этом шаге мы рассмотрим классы BufferedReader и BufferedWriter
Класс BufferedReader увеличивает производительность благодаря буферизации ввода. У него имеются следующие два конструктора:
BufferedReader(Reader reader);
BufferedReader(Reader reader, int size);
В первой форме конструктора создается буферизованный поток ввода символов, использующий размер буфера по умолчанию. Во второй форме конструктора задается размер буфера size.
Закрытие потока типа BufferedReader приводит также к закрытию базового потока, определенного параметров reader. Аналогично потоку ввода байтов, буферизованный поток ввода символов также поддерживает механизм перемещения обратно по потоку ввода в пределах доступного буфера. Для этой цели в классе BufferedReader реализуются методы mark() и reset(), а метод BufferedReader.markSupported() возвращает логическое значение true. В версии JDK 8 класс BufferedReader дополнен новым методом lines(). Этот метод возвращает ссылку типа Stream (с классом Stream мы познакомимся позднее) на последовательность строк, введенных из потока чтения.
Класс BufferedWriter является производным от класса Writer и буферизует выводимые данные. Применяя класс BufferedWriter, можно повысить производительность за счет снижения количества операций физической записи в устройство вывода.
У класса BufferedWriter имеются два конструктора:
BufferedWriter(Writer writer);
BufferedWriter(Writer writer, int size);
В первой форме конструктора создается буферизованный поток вывода, использующий буфер размером, выбираемым по умолчанию. А во второй форме задается конкретный размер буфера size.
На следующем шаге мы рассмотрим класс PrintWriter