Spec-Zone.ru › OpenJDK 21

Класс BufferedReader

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

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

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

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

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

С момента:
1.1
См. также:
  • FileReader
  • InputStreamReader
  • Files.newBufferedReader(java.nio.file.Path, java.nio.charset.Charset)

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

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

lock

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

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

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

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

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

nullReader, read, read, skip, transferTo

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

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

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

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
Читает строку текста. Строка считается завершенной любым из следующих символов: перевод строки ('\n'), возврат каретки ('\r'), возврат каретки, немедленно за которым следует перевод строки, или достижение конца файла (EOF).
Возвращает:
Строка, содержащая содержимое строки, не включая символы завершения строки, или null, если достигнут конец потока без чтения каких-либо символов
Исключения:
IOException - Если произошла ошибка ввода-вывода
См. также:
  • Files.readAllLines(java.nio.file.Path, java.nio.charset.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 - Ограничение на количество символов, которые могут быть прочитаны, сохраняя метку. Попытка сбросить поток после чтения символов до этого предела или за его пределами может завершиться неудачей. Значение предела, большее, чем размер буфера ввода, вызовет выделение нового буфера, размер которого не меньше, чем limit. Поэтому следует осторожно использовать большие значения.
Исключения:
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 заполняется лениво, т.е. чтение происходит только во время терминальной операции потока.

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

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

Если при доступе к базовому потоку возникает исключение 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

Spec-Zone.ru

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