Класс 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 |
Создаёт объект BufferedInputStream и сохраняет его аргумент — входной поток in — для последующего использования. |
BufferedInputStream |
Создаёт объект BufferedInputStream с указанным размером буфера и сохраняет его аргумент — входной поток in — для последующего использования. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
available() |
Возвращает оценку количества байтов, которые можно прочитать из этого входного потока (или пропустить в нём) без блокировки при следующем вызове метода для этого потока. |
void |
close() |
Закрывает этот входной поток и освобождает все системные ресурсы, связанные с ним. |
void |
mark |
См. общий контракт метода mark класса InputStream. |
boolean |
markSupported() |
Проверяет, поддерживает ли этот входной поток методы mark и reset. |
int |
read() |
См. общий контракт метода read класса InputStream. |
int |
read |
Считывает байты из этого байтового входного потока в указанный байтовый массив, начиная с заданного смещения. |
void |
reset() |
См. общий контракт метода reset класса InputStream. |
long |
skip |
См. общий контракт метода skip класса InputStream. |
Методы, объявленные в классе FilterInputStream
read
Методы, объявленные в классе InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
Подробное описание полей
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 потребуется прочитать дополнительные байты из содержащегося входного потока.
- См. также:
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.
- См. также:
marklimit
protected int marklimit
mark, прежде чем последующие вызовы метода reset завершатся ошибкой. Если разность между pos и markpos превышает marklimit, отметка может быть сброшена путём присваивания markpos значения -1.- См. также:
Подробное описание конструкторов
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()или произошла ошибка ввода-вывода. - См. также:
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 - См. также:
skip
public long skip(long n) throws IOException
skip класса InputStream.- Переопределяет:
-
skipв классеFilterInputStream - Параметры:
-
n— количество байтов, которое нужно пропустить. - Возвращает:
- фактическое количество пропущенных байтов.
- Выбрасывает:
-
IOException— если этот входной поток был закрыт вызовом методаclose(),in.skip(n)выбрасывает IOException или происходит ошибка ввода-вывода. - См. также:
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
public void reset() throws IOException
reset класса InputStream. Если markpos равно -1 (отметка не была установлена или стала недействительной), выбрасывается IOException. В противном случае pos присваивается значение markpos.
- Переопределяет:
-
resetв классеFilterInputStream - Выбрасывает:
-
IOException— если для этого потока не была установлена отметка, отметка стала недействительной, поток был закрыт вызовом методаclose()или произошла ошибка ввода-вывода. - См. также:
markSupported
public boolean markSupported()
mark и reset. Метод markSupported класса BufferedInputStream возвращает true.- Переопределяет:
-
markSupportedв классеFilterInputStream - Возвращает:
- значение типа
boolean, указывающее, поддерживает ли этот тип потока методыmarkиreset. - См. также:
close
public void close() throws IOException
- Определён в:
-
closeв интерфейсеAutoCloseable - Определён в:
-
closeв интерфейсеCloseable - Переопределяет:
-
closeв классеFilterInputStream - Выбрасывает:
-
IOException— если произошла ошибка ввода-вывода. - См. также:
© 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