Spec-Zone.ru › OpenJDK 25

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

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

Конструктор Описание
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

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

nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo

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

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

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

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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/BufferedInputStream.html

Spec-Zone.ru

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