Класс BufferedInputStream
- Все реализованные интерфейсы:
-
Closeable,AutoCloseable
public class BufferedInputStream extends FilterInputStream
BufferedInputStream добавляет функциональность к другому потоку ввода — возможность буферизации ввода и поддержку методов mark и reset. При создании BufferedInputStream, создаётся внутренний массив буфера. При чтении или пропуске байтов из потока внутренний буфер заполняется по мере необходимости данными из содержащегося потока ввода, по несколько байтов за раз. Операция reset запоминает точку в потоке ввода, а операция mark заставляет повторно прочитать все байты, прочитанные с момента последней операции mark, прежде чем извлекать новые байты из содержащегося потока ввода.- С:
- 1.0
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected byte[] |
buf |
Внутренний буферный массив, где хранятся данные. |
protected int |
count |
Индекс, на единицу больший, чем индекс последнего допустимого байта в буфере. |
protected int |
marklimit |
Максимальный объём предварительного чтения, разрешённого после вызова метода mark перед последующими вызовами метода reset. |
protected int |
markpos |
Значение поля pos на момент вызова последнего метода mark. |
protected int |
pos |
Текущая позиция в буфере. |
Поля, объявленные в классе java.io.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. |
Методы, объявленные в классе java.io.FilterInputStream
read
Методы, объявленные в классе java.io.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()или произошла ошибка ввода-вывода. - См. также:
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.- Overrides:
-
markSupportedв классеFilterInputStream - Returns:
- значение
boolean, указывающее, поддерживает ли этот тип потока методыmarkиreset. - См. также:
close
public void close() throws IOException
- Определено в:
-
closeв интерфейсеAutoCloseable - Определено в:
-
closeв интерфейсеCloseable - Overrides:
-
closeв классеFilterInputStream - Исключения:
-
IOException- если произошла ошибка ввода-вывода. - См. также:
© 1993, 2021, 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/17/docs/api/java.base/java/io/BufferedInputStream.html