Класс 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
- См. также:
Краткое описание полей
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
BufferedReader |
Создаёт буферизованный поток символьного ввода, использующий буфер ввода размером по умолчанию. |
BufferedReader |
Создаёт буферизованный поток символьного ввода, использующий буфер ввода указанного размера. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
close() |
Закрывает поток и освобождает связанные с ним системные ресурсы. |
Stream |
lines() |
Возвращает Stream, элементы которого — строки, считанные из этого BufferedReader. |
void |
mark |
Отмечает текущую позицию в потоке. |
boolean |
markSupported() |
Сообщает, поддерживает ли этот поток операцию mark(), которую он поддерживает. |
int |
read() |
Считывает один символ. |
int |
read |
Считывает символы в часть массива. |
String |
readLine() |
Считывает строку текста. |
boolean |
ready() |
Сообщает, готов ли этот поток к чтению. |
void |
reset() |
Возвращает поток к последней установленной отметке. |
Методы, объявленные в классе Reader
nullReader, of, read, read, readAllAsString, readAllLines, skip, transferTo | Модификатор и тип | Метод | Описание |
|---|---|---|
static Reader |
nullReader() |
Возвращает новый Reader, который не считывает символы. |
static Reader |
of |
Возвращает Reader, который считывает символы из CharSequence. |
int |
read |
Считывает символы в массив. |
int |
read |
Пытается считать символы в указанный буфер символов. |
String |
readAllAsString() |
Считывает все оставшиеся символы в строку. |
List |
readAllLines() |
Считывает все оставшиеся символы как строки текста. |
long |
skip |
Пропускает символы. |
long |
transferTo |
Считывает все символы из этого reader и записывает их в указанный writer в порядке чтения. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, является ли другой объект «равным» этому. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Финализация устарела и подлежит удалению в одном из следующих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно вследствие уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие уведомления или прерывания, либо до истечения заданного промежутка времени. |
final void |
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
- Возвращает:
- Строку String, содержащую текст строки без символов её завершения, или null, если достигнут конец потока и не считано ни одного символа
- Исключения:
-
IOException— при возникновении ошибки ввода-вывода - См. также:
ready
public boolean ready() throws IOException
- Переопределяет:
-
readyв классеReader - Возвращает:
- true, если гарантируется, что следующий вызов read() не будет заблокирован в ожидании ввода; в противном случае false. Обратите внимание: возврат false не гарантирует, что следующий вызов read будет заблокирован.
- Исключения:
-
IOException— при возникновении ошибки ввода-вывода
markSupported
public boolean markSupported()
- Переопределяет:
-
markSupportedв классеReader - Возвращает:
- true тогда и только тогда, когда этот поток поддерживает операцию mark.
mark
public void mark(int readAheadLimit) throws IOException
- Переопределяет:
-
markв классеReader - Параметры:
-
readAheadLimit— ограничение на количество символов, которые можно считать, сохранив отметку. Попытка сбросить поток после чтения количества символов, равного этому пределу или превышающего его, может завершиться неудачей. Если значение предела превышает размер буфера ввода, будет выделен новый буфер размером не меньше этого предела. Поэтому большие значения следует использовать с осторожностью. - Исключения:
-
IllegalArgumentException— еслиreadAheadLimit < 0 -
IOException— при возникновении ошибки ввода-вывода
reset
public void reset() throws IOException
- Переопределяет:
-
resetв классеReader - Исключения:
-
IOException— если отметка ни разу не устанавливалась или была признана недействительной
close
public void close() throws IOException
Reader- Определено в:
-
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
© 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.