Spec-Zone.ru › OpenJDK 27

Класс BufferedInputStream

java.lang.Object
java.io.InputStream
java.io.FilterInputStream
java.io.BufferedInputStream
Все реализованные интерфейсы:
Closeable, AutoCloseable
public class BufferedInputStream extends FilterInputStream
Класс BufferedInputStream добавляет функциональность другому потоку ввода, а именно возможность буферизовать входные данные и поддерживать методы mark и reset. При создании объекта BufferedInputStream создаётся внутренний массив буфера. По мере чтения или пропуска байтов из потока внутренний буфер при необходимости заполняется данными из содержащегося в нём входного потока — сразу несколькими байтами. Операция mark запоминает позицию во входном потоке, а операция reset заставляет повторно прочитать все байты, прочитанные после последней операции mark, прежде чем получать новые байты из содержащегося входного потока.
Примечание к API:
После обёртывания в BufferedInputStream не следует напрямую использовать базовый InputStream или оборачивать его в другой поток.
С версии:
1.0

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

Модификатор и тип Поле Описание
protected byte[] buf
Внутренний массив буфера, в котором хранятся данные.
protected int count
Индекс, следующий за индексом последнего допустимого байта в буфере.
protected int marklimit
Максимальное количество байтов, которое можно прочитать после вызова метода mark до того, как последующие вызовы метода reset завершатся ошибкой.
protected int markpos
Значение поля pos на момент последнего вызова метода mark.
protected int pos
Текущая позиция в буфере.

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

in
Модификатор и тип Поле Описание
protected InputStream in
Входной поток, который необходимо фильтровать.

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

Конструктор Описание
BufferedInputStream(InputStream in)
Создаёт BufferedInputStream и сохраняет аргумент — входной поток in — для последующего использования.
BufferedInputStream(InputStream in, int size)
Создаёт BufferedInputStream с указанным размером буфера и сохраняет аргумент — входной поток in — для последующего использования.

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

Модификатор и тип Метод Описание
int available()
Возвращает оценку количества байтов, которые можно прочитать из этого входного потока (или пропустить), не блокируясь при следующем вызове метода для этого потока.
void close()
Закрывает этот входной поток и освобождает все системные ресурсы, связанные с ним.
void mark(int readlimit)
См. общие условия контракта метода mark класса InputStream.
boolean markSupported()
Проверяет, поддерживает ли этот входной поток методы mark и reset.
int read()
См. общие условия контракта метода read класса InputStream.
int read(byte[] b, int off, int len)
Читает байты из этого байтового входного потока в указанный массив байтов, начиная с заданного смещения.
void reset()
См. общие условия контракта метода reset класса InputStream.
long skip(long n)
См. общие условия контракта метода skip класса InputStream.

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

read
Модификатор и тип Метод Описание
int read(byte[] b)
Читает из этого входного потока в массив байтов до b.length байтов данных.

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

nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
Модификатор и тип Метод Описание
static InputStream nullInputStream()
Возвращает новый InputStream, который не читает байты.
byte[] readAllBytes()
Читает все оставшиеся байты из входного потока.
int readNBytes(byte[] b, int off, int len)
Читает из входного потока запрошенное количество байтов в указанный массив байтов.
byte[] readNBytes(int len)
Читает из входного потока до указанного количества байтов.
void skipNBytes(long n)
Пропускает и отбрасывает ровно n байтов данных из этого входного потока.
long transferTo(OutputStream out)
Читает все байты из этого входного потока и записывает их в указанный выходной поток в том порядке, в котором они были прочитаны.

Методы, объявленные в классе 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()
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

Подробное описание полей

buf

protected volatile byte[] buf
Внутренний массив буфера, в котором хранятся данные. При необходимости он может быть заменён другим массивом другого размера.

count

protected int count
Индекс, следующий за индексом последнего допустимого байта в буфере. Это значение всегда находится в диапазоне от 0 до buf.length; элементы от buf[0] до buf[count-1] содержат буферизованные входные данные, полученные из базового входного потока.

pos

protected int pos
Текущая позиция в буфере. Это индекс следующего байта, который будет прочитан из массива buf.

Это значение всегда находится в диапазоне от 0 до count. Если оно меньше count, следующим байтом, который будет предоставлен в качестве входных данных, будет buf[pos]; если оно равно count, то для следующей операции read или skip потребуется прочитать дополнительные байты из содержащегося входного потока.

См. также:
  • buf

markpos

protected int markpos
Значение поля pos на момент последнего вызова метода mark.

Это значение всегда находится в диапазоне от -1 до pos. Если во входном потоке нет отмеченной позиции, значение этого поля равно -1. Если во входном потоке есть отмеченная позиция, то buf[markpos] — это первый байт, который будет предоставлен в качестве входных данных после операции reset. Если markpos не равно -1, все байты с позиций от buf[markpos] до buf[pos-1] должны оставаться в массиве буфера (хотя их можно переместить в другое место массива буфера, соответствующим образом скорректировав значения count, pos и markpos); их нельзя отбрасывать, пока разность между pos и markpos не превысит marklimit.

См. также:
  • mark(int)
  • pos

marklimit

protected int marklimit
Максимальное количество байтов, которое можно прочитать после вызова метода mark до того, как последующие вызовы метода reset завершатся ошибкой. Если разность между pos и markpos превышает marklimit, отметка может быть сброшена присваиванием markpos значения -1.
См. также:
  • mark(int)
  • reset()

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

BufferedInputStream

public BufferedInputStream(InputStream in)
Создаёт BufferedInputStream и сохраняет аргумент — входной поток in — для последующего использования. Внутренний массив буфера создаётся и сохраняется в buf.
Параметры:
in — базовый входной поток.

BufferedInputStream

public BufferedInputStream(InputStream in, int size)
Создаёт BufferedInputStream с указанным размером буфера и сохраняет аргумент — входной поток in — для последующего использования. Внутренний массив буфера длиной size создаётся и сохраняется в buf.
Параметры:
in — базовый входной поток.
size — размер буфера.
Вызывает исключение:
IllegalArgumentException — если size <= 0.

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

read

public int read() throws IOException
См. общие условия контракта метода read класса InputStream.
Переопределяет:
read в классе FilterInputStream
Возвращает:
следующий байт данных или -1, если достигнут конец потока.
Вызывает исключение:
IOException — если этот входной поток был закрыт вызовом метода close() или произошла ошибка ввода-вывода.
См. также:
  • FilterInputStream.in

read

public int read(byte[] b, int off, int len) throws IOException
Читает байты из этого байтового входного потока в указанный массив байтов, начиная с заданного смещения.

Этот метод реализует общие условия контракта соответствующего метода read класса InputStream. Для дополнительного удобства он пытается прочитать как можно больше байтов, многократно вызывая метод read базового потока. Это повторяющееся чтение read продолжается, пока не выполнится одно из следующих условий:

  • Прочитано указанное количество байтов;
  • Метод read базового потока возвращает -1, указывая на конец файла; или
  • Метод available базового потока возвращает ноль, указывая на то, что дальнейшие запросы на ввод приведут к блокировке.
Если первый вызов read базового потока возвращает -1, указывая на конец файла, этот метод возвращает -1. В противном случае метод возвращает фактическое количество прочитанных байтов.

Подклассам этого класса рекомендуется, но не обязательно, пытаться читать как можно больше байтов таким же образом.

Переопределяет:
read в классе FilterInputStream
Параметры:
b — буфер назначения.
off — смещение, с которого следует начать запись байтов.
len — максимальное количество байтов для чтения.
Возвращает:
количество прочитанных байтов или -1, если достигнут конец потока.
Вызывает исключение:
IOException — если этот входной поток был закрыт вызовом метода close() или произошла ошибка ввода-вывода.
IndexOutOfBoundsException — если off отрицательно, len отрицательно или len больше b.length - off
См. также:
  • FilterInputStream.in

skip

public long skip(long n) throws IOException
См. общие условия контракта метода skip класса InputStream.
Переопределяет:
skip в классе FilterInputStream
Параметры:
n — количество байтов, которое нужно пропустить.
Возвращает:
фактическое количество пропущенных байтов.
Вызывает исключение:
IOException — если этот входной поток был закрыт вызовом метода close(), in.skip(n) вызывает IOException или происходит ошибка ввода-вывода.
См. также:
  • InputStream.skipNBytes(long)

available

public int available() throws IOException
Возвращает оценку количества байтов, которые можно прочитать из этого входного потока (или пропустить), не блокируясь при следующем вызове метода для этого потока. Следующий вызов может быть выполнен тем же или другим потоком. Однократное чтение или пропуск такого количества байтов не приведёт к блокировке, однако может быть прочитано или пропущено меньшее количество байтов.

Этот метод возвращает сумму количества байтов, оставшихся для чтения в буфере (count - pos), и результата вызова in.available().

Переопределяет:
available в классе FilterInputStream
Возвращает:
оценку количества байтов, которые можно прочитать из этого входного потока (или пропустить), не блокируясь.
Вызывает исключение:
IOException — если этот входной поток был закрыт вызовом метода close() или произошла ошибка ввода-вывода.

mark

public void mark(int readlimit)
См. общие условия контракта метода mark класса InputStream.
Переопределяет:
mark в классе FilterInputStream
Параметры:
readlimit — максимальное количество байтов, которое можно прочитать до того, как позиция отметки станет недействительной.
См. также:
  • reset()

reset

public void reset() throws IOException
См. общие условия контракта метода reset класса InputStream.

Если markpos равно -1 (отметка не установлена или стала недействительной), выбрасывается IOException. В противном случае pos устанавливается равным markpos.

Переопределяет:
reset в классе FilterInputStream
Вызывает исключение:
IOException — если для этого потока не была установлена отметка или она стала недействительной, поток был закрыт вызовом метода close() либо произошла ошибка ввода-вывода.
См. также:
  • mark(int)

markSupported

public boolean markSupported()
Проверяет, поддерживает ли этот входной поток методы mark и reset. Метод markSupported класса BufferedInputStream возвращает true.
Переопределяет:
markSupported в классе FilterInputStream
Возвращает:
значение типа boolean, указывающее, поддерживает ли этот тип потока методы mark и reset.
См. также:
  • InputStream.mark(int)
  • InputStream.reset()

close

public void close() throws IOException
Закрывает этот входной поток и освобождает все системные ресурсы, связанные с ним. После закрытия потока дальнейшие вызовы read(), available(), reset() или skip() приведут к выбросу IOException. Повторное закрытие уже закрытого потока не оказывает никакого эффекта.
Определено в:
close в интерфейсе AutoCloseable
Определено в:
close в интерфейсе Closeable
Переопределяет:
close в классе FilterInputStream
Вызывает исключение:
IOException — если произошла ошибка ввода-вывода.
См. также:
  • FilterInputStream.in

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по 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