Spec-Zone.ru › OpenJDK 8

Класс 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.

С момента:
JDK1.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()

Возвращает 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()

Возвращает поток к последней метке.

long skip(long n)

Пропускает символы.

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

read, read

Методы, унаследованные от класса 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, если достигнут конец потока
Исключения:
IOException - Если произошла ошибка ввода-вывода

readLine

public String readLine()
                throws IOException

Читает строку текста. Строка считается завершённой любым из символов перевода строки ('\n'), возврата каретки ('\r'), или возврата каретки, сразу за которым следует перевод строки.

Возвращает:
Строку, содержащую содержимое строки, не включая символы завершения строки, или null, если достигнут конец потока
Исключения:
IOException - Если произошла ошибка ввода-вывода
См. также:
Files.readAllLines(java.nio.file.Path, java.nio.charset.Charset)

skip

public long skip(long n)
          throws IOException

Пропускает символы.

Переопределяет:
skip в классе Reader
Параметры:
n - Количество символов для пропуска
Возвращает:
Количество фактически пропущенных символов
Исключения:
IllegalArgumentException - Если n отрицательно.
IOException - Если произошла ошибка ввода-вывода

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 в интерфейсе Closeable
Определено в:
close в интерфейсе AutoCloseable
Определено в:
close в классе Reader
Исключения:
IOException - Если произошла ошибка ввода-вывода

lines

public Stream<String> lines()

Возвращает Stream, элементы которого являются строками, считанными из этого BufferedReader. Поток Stream заполняется лениво, т.е. чтение происходит только во время терминальной операции потока.

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

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

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

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

© 1993, 2020, 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