Класс BufferedReader
- Все реализуемые интерфейсы:
-
Closeable,AutoCloseable,Readable
- Прямые известные подклассы:
LineNumberReader
public class BufferedReader extends Reader
Размер буфера может быть задан или использован по умолчанию. Размер по умолчанию достаточно велик для большинства целей.
В общем случае каждый запрос чтения, выполненный с помощью Reader, вызывает соответствующий запрос чтения к базовому потоку символов или байтов. Поэтому рекомендуется обернуть BufferedReader вокруг любого Reader, чьи операции read() могут быть дорогостоящими, например, FileReader и InputStreamReader. Например,
BufferedReader in = new BufferedReader(new FileReader("foo.in"));
Программы, использующие DataInputStream для текстового ввода, могут быть локализованы путем замены каждого DataInputStream на соответствующий BufferedReader.
- С момента:
- 1.1
- См. также:
Краткое описание полей
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
BufferedReader |
Создает буферизованный поток символьного ввода, использующий буфер ввода с размером по умолчанию. |
BufferedReader |
Создает буферизованный поток символьного ввода, использующий буфер ввода заданного размера. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
close() |
Закрывает поток и освобождает все системные ресурсы, связанные с ним. |
Stream |
lines() |
Возвращает массив строк, элементы которого представляют строки, прочитанные из данного потока. |
void |
mark |
Помечает текущую позицию в потоке. |
boolean |
markSupported() |
Указывает, поддерживает ли этот поток операцию mark(), которая поддерживается. |
int |
read() |
Читает один символ. |
int |
read |
Читает символы в часть массива. |
String |
readLine() |
Читает строку текста. |
boolean |
ready() |
Определяет, готов ли данный поток к чтению. |
void |
reset() |
Возвращает поток к последней метке. |
Методы, объявленные в классе java.io.Reader
nullReader, read, read, skip, transferTo
Подробное описание конструкторов
BufferedReader
public BufferedReader(Reader in, int sz)
- Параметры:
-
in- Поток чтения -
sz- Размер буфера ввода - Исключения:
-
IllegalArgumentException- Еслиsz <= 0
BufferedReader
public BufferedReader(Reader in)
- Параметры:
-
in- Поток чтения
Подробное описание методов
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
- Возвращает:
- Строка, содержащая содержимое строки, не включая символы завершения строки, или 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- Ограничение на количество символов, которые могут быть прочитаны, сохраняя метку. Попытка сбросить поток после чтения символов до этого предела или за его пределами может завершиться неудачей. Значение предела, большее, чем размер буфера ввода, вызовет выделение нового буфера, размер которого не меньше, чем limit. Поэтому следует осторожно использовать большие значения. - Исключения:
-
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 заполняется лениво, т.е. чтение происходит только во время терминальной операции потока. Поток чтения не должен обрабатываться во время выполнения терминальной операции потока. В противном случае результат терминальной операции потока не определён.
После выполнения терминальной операции потока нет гарантии, что поток чтения будет в определённой позиции для чтения следующего символа или строки.
Если при доступе к базовому потоку возникает исключение IOException, оно обертывается в UncheckedIOException, которое будет выброшено из метода Stream, вызвавшего чтение. Этот метод вернёт поток, если он вызван на закрытом BufferedReader. Любая операция над этим потоком, требующая чтения из BufferedReader после его закрытия, вызовет UncheckedIOException.
- Возвращает:
- поток, предоставляющий строки текста, описанные этим потоком
- С:
- 1.8
© 1993, 2023, 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/21/docs/api/java.base/java/io/BufferedReader.html