Класс 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 |
Создаёт 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 | Модификатор и тип | Метод | Описание |
|---|---|---|
int |
read |
Читает из этого входного потока в массив байтов до b.length байтов данных. |
Методы, объявленные в классе InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo | Модификатор и тип | Метод | Описание |
|---|---|---|
static InputStream |
nullInputStream() |
Возвращает новый InputStream, который не читает байты. |
byte[] |
readAllBytes() |
Читает все оставшиеся байты из входного потока. |
int |
readNBytes |
Читает из входного потока запрошенное количество байтов в указанный массив байтов. |
byte[] |
readNBytes |
Читает из входного потока до указанного количества байтов. |
void |
skipNBytes |
Пропускает и отбрасывает ровно n байтов данных из этого входного потока. |
long |
transferTo |
Читает все байты из этого входного потока и записывает их в указанный выходной поток в том порядке, в котором они были прочитаны. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Показывает, равен ли другой объект этому объекту. |
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 |
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова 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 потребуется прочитать дополнительные байты из содержащегося входного потока.
- См. также:
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.