Spec-Zone.ru › OpenJDK 27

Класс BufferedReader

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

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

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

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

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

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

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

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

lock
Модификатор и тип Поле Описание
protected Object 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
Модификатор и тип Метод Описание
static Reader nullReader()
Возвращает новый Reader, который не считывает символы.
static Reader of(CharSequence cs)
Возвращает Reader, который считывает символы из CharSequence.
int read(char[] cbuf)
Считывает символы в массив.
int read(CharBuffer target)
Пытается считать символы в указанный буфер символов.
String readAllAsString()
Считывает все оставшиеся символы в строку.
List<String> readAllLines()
Считывает все оставшиеся символы как строки текста.
long skip(long n)
Пропускает символы.
long transferTo(Writer out)
Считывает все символы из этого reader и записывает их в указанный writer в порядке чтения.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, является ли другой объект «равным» этому.
protected void finalize()
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии.
Финализация устарела и подлежит удалению в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно вследствие уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно вследствие уведомления или прерывания, либо до истечения заданного промежутка времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно вследствие уведомления или прерывания, либо до истечения заданного промежутка времени.

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

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).
Возвращает:
Строку String, содержащую текст строки без символов её завершения, или 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, 2026, 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.

Spec-Zone.ru

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