Spec-Zone.ru › OpenJDK 25

Класс BufferedReader

java.lang.Object
java.io.Reader
java.io.BufferedReader
Все реализуемые интерфейсы:
Closeable, AutoCloseable, Readable
Прямые известные подклассы:
LineNumberReader
public class BufferedReader extends Reader
Читает текст из потока ввода символов, буферизуя символы, чтобы обеспечить эффективное чтение символов, массивов и строк.

Размер буфера можно задать явно или использовать размер по умолчанию. Размер по умолчанию подходит для большинства случаев.

Обычно каждый запрос на чтение, выполняемый для Reader, приводит к соответствующему запросу на чтение из базового потока символов или байтов. Поэтому рекомендуется оборачивать Reader в BufferedReader, если операции read() с ним могут быть затратными, например для FileReader и InputStreamReader. Например:

    BufferedReader in = new BufferedReader(new FileReader("foo.in"));
будет буферизовать ввод из указанного файла. Без буферизации каждый вызов read() или readLine() может приводить к чтению байтов из файла, преобразованию их в символы и последующему возврату, что может быть крайне неэффективно.

Программы, использующие DataInputStream для текстового ввода, можно локализовать, заменив каждый DataInputStream подходящим BufferedReader.

Примечание к API:
После оборачивания в BufferedReader базовый Reader не следует использовать напрямую или оборачивать в другой Reader.
С версии:
1.1
См. также:
  • FileReader
  • InputStreamReader
  • Files.newBufferedReader(Path, Charset)

Краткое описание полей

Поля, объявленные в классе Reader

lock

Краткое описание конструкторов

Конструктор Описание
BufferedReader(Reader in)
Создает буферизованный поток ввода символов, использующий буфер ввода размера по умолчанию.
BufferedReader(Reader in, int sz)
Создает буферизованный поток ввода символов, использующий буфер ввода заданного размера.

Краткое описание методов

Модификатор и тип Метод Описание
void close()
Закрывает поток и освобождает все связанные с ним системные ресурсы.
Stream<String> lines()
Возвращает Stream, элементы которого — строки, прочитанные из этого BufferedReader.
void mark(int readAheadLimit)
Помечает текущую позицию в потоке.
boolean markSupported()
Сообщает, поддерживает ли этот поток операцию mark(); поток ее поддерживает.
int read()
Считывает один символ.
int read(char[] cbuf, int off, int len)
Считывает символы в часть массива.
String readLine()
Считывает строку текста.
boolean ready()
Сообщает, готов ли этот поток к чтению.
void reset()
Возвращает поток к последней установленной отметке.

Методы, объявленные в классе Reader

nullReader, of, read, read, readAllAsString, readAllLines, skip, transferTo

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

BufferedReader

public BufferedReader(Reader in, int sz)
Создает буферизованный поток ввода символов, использующий буфер ввода заданного размера.
Параметры:
in — Reader
sz — Размер буфера ввода
Исключения:
IllegalArgumentException — если sz <= 0

BufferedReader

public BufferedReader(Reader in)
Создает буферизованный поток ввода символов, использующий буфер ввода размера по умолчанию.
Параметры:
in — Reader

Подробное описание методов

read

public int read() throws IOException
Считывает один символ.
Переопределяет:
read в классе Reader
Возвращает:
Считанный символ в виде целого числа в диапазоне от 0 до 65535 (0x00-0xffff) или -1, если достигнут конец потока
Исключения:
IOException — при возникновении ошибки ввода-вывода

read

public int read(char[] cbuf, int off, int len) throws IOException
Считывает символы в часть массива.

Этот метод реализует общий контракт соответствующего метода read класса Reader. Для дополнительного удобства он пытается считать как можно больше символов, многократно вызывая метод read базового потока. Такое повторяющееся read продолжается до тех пор, пока не выполнится одно из следующих условий:

  • Считано указанное количество символов,
  • Метод read базового потока возвращает -1, указывая на конец файла, или
  • Метод ready базового потока возвращает false, указывая, что дальнейшие запросы ввода будут заблокированы.
Если первый read базового потока возвращает -1, указывая на конец файла, этот метод возвращает -1. В противном случае метод возвращает фактическое количество считанных символов.

Подклассам этого класса рекомендуется, но не обязательно, пытаться считывать как можно больше символов тем же способом.

Обычно этот метод считывает символы из буфера символов этого потока, заполняя его из базового потока по мере необходимости. Однако если буфер пуст, отметка недействительна, а запрошенная длина не меньше размера буфера, этот метод считывает символы непосредственно из базового потока в указанный массив. Таким образом, избыточные вызовы BufferedReader не приводят к ненужному копированию данных.

Определен в:
read в классе Reader
Параметры:
cbuf — буфер назначения
off — смещение, с которого следует начать сохранение символов
len — максимальное количество символов для чтения
Возвращает:
Количество считанных символов или -1, если достигнут конец потока
Исключения:
IndexOutOfBoundsException — если off отрицательно, или len отрицательно, или len больше cbuf.length - off
IOException — при возникновении ошибки ввода-вывода

readLine

public String readLine() throws IOException
Считывает строку текста. Строка считается завершенной при наличии символа перевода строки ('\n'), символа возврата каретки ('\r'), символа возврата каретки, за которым непосредственно следует символ перевода строки, либо при достижении конца файла (EOF).
Возвращает:
Строку, содержащую текст строки без символов завершения строки, или null, если достигнут конец потока и ни одного символа не было считано
Исключения:
IOException — при возникновении ошибки ввода-вывода
См. также:
  • Files.readAllLines(Path, Charset)

ready

public boolean ready() throws IOException
Сообщает, готов ли этот поток к чтению. Буферизованный поток символов готов к чтению, если буфер не пуст или базовый поток символов готов к чтению.
Переопределяет:
ready в классе Reader
Возвращает:
true, если следующий вызов read() гарантированно не будет заблокирован в ожидании ввода; в противном случае false. Обратите внимание: возврат false не гарантирует, что следующий вызов read будет заблокирован.
Исключения:
IOException — при возникновении ошибки ввода-вывода

markSupported

public boolean markSupported()
Сообщает, поддерживает ли этот поток операцию mark(); поток ее поддерживает.
Переопределяет:
markSupported в классе Reader
Возвращает:
true тогда и только тогда, когда этот поток поддерживает операцию mark.

mark

public void mark(int readAheadLimit) throws IOException
Помечает текущую позицию в потоке. Последующие вызовы reset() попытаются вернуть поток в эту позицию.
Переопределяет:
mark в классе Reader
Параметры:
readAheadLimit — предел количества символов, которые можно считать с сохранением отметки. Попытка сбросить поток после считывания этого количества символов или большего числа может завершиться неудачей. Если значение предела превышает размер буфера ввода, будет выделен новый буфер размером не меньше этого предела. Поэтому большие значения следует использовать с осторожностью.
Исключения:
IllegalArgumentException — если readAheadLimit < 0
IOException — при возникновении ошибки ввода-вывода

reset

public void reset() throws IOException
Возвращает поток к последней установленной отметке.
Переопределяет:
reset в классе Reader
Исключения:
IOException — если отметка в потоке никогда не устанавливалась или стала недействительной

close

public void close() throws IOException
Описание скопировано из класса: Reader
Закрывает поток и освобождает все связанные с ним системные ресурсы. После закрытия потока дальнейшие вызовы read(), ready(), mark(), reset() или skip() приведут к выбросу IOException. Повторное закрытие уже закрытого потока не оказывает никакого эффекта.
Определен в:
close в интерфейсе AutoCloseable
Определен в:
close в интерфейсе Closeable
Определен в:
close в классе Reader
Исключения:
IOException — при возникновении ошибки ввода-вывода

lines

public Stream<String> lines()
Возвращает Stream, элементы которого — строки, прочитанные из этого BufferedReader. Stream заполняется лениво, то есть чтение происходит только во время терминальной операции потока.

Во время выполнения терминальной операции потока нельзя выполнять операции с reader. В противном случае результат терминальной операции потока не определен.

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

Если при обращении к базовому BufferedReader возникает IOException, она оборачивается в UncheckedIOException, которая будет выброшена из метода Stream, вызвавшего чтение. Этот метод вернет Stream, если его вызвать для закрытого BufferedReader. Любая операция с этим потоком, требующая чтения из закрытого BufferedReader, приведет к выбросу UncheckedIOException.

Возвращает:
Stream<String>, предоставляющий строки текста, описанные этим BufferedReader
С версии:
1.8

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, общие сведения, определения терминов, способы обхода ограничений и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее дочерних компаний в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и правилами распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/BufferedReader.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API