Класс 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, прежде чем брать новые байты из содержащегося потока ввода.
- С:
- 1.0
Поля
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected byte[] | buf | Внутренний массив буфера, где хранятся данные. |
protected int | count | Индекс, на единицу больший, чем индекс последнего допустимого байта в буфере. |
protected int | marklimit | Максимальный объём предзагрузки, разрешённый после вызова метода |
protected int | markpos | Значение поля |
protected int | pos | Текущая позиция в буфере. |
Поля, объявленные в классе java.io.FilterInputStream
in Конструкторы
| Конструктор | Описание |
|---|---|
BufferedInputStream(InputStream in) | Создаёт |
BufferedInputStream(InputStream in,
int size) | Создаёт |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
int | available() | Возвращает оценку числа байтов, которые могут быть прочитаны (или пропущены) из этого потока ввода без блокировки до следующего вызова метода для этого потока ввода. |
void | close() | Закрывает этот поток ввода и освобождает все системные ресурсы, связанные с этим потоком. |
void | mark(int readlimit) | См. общее соглашение метода |
boolean | markSupported() | Проверяет, поддерживает ли этот поток ввода методы |
int | read() | См. общее соглашение метода |
int | read(byte[] b,
int off,
int len) | Считывает байты из этого потока ввода в указанный массив байтов, начиная с заданного смещения. |
void | reset() | См. общее соглашение метода |
long | skip(long n) | См. общее соглашение метода |
Методы, объявленные в классе java.io.FilterInputStream
read Методы, объявленные в классе java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, transferTo Методы, объявленные в классе java.lang.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.
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(), или произошла ошибка ввода-вывода. - См. также:
FilterInputStream.in
read
public int read(byte[] b,
int off,
int len)
throws IOException Считывает байты из этого потока байтового ввода в указанный массив байтов, начиная с заданного смещения.
Этот метод реализует общее соглашение соответствующего метода класса read. В качестве дополнительного удобства он пытается прочитать как можно больше байтов, многократно вызывая метод InputStreamread базового потока. Эта итерация read продолжается до тех пор, пока не выполнится одно из следующих условий:
- Было прочитано заданное количество байтов,
- Метод
readбазового потока возвращает-1, указывая конец файла, или - Метод
availableбазового потока возвращает ноль, указывая на то, что дальнейшие запросы на ввод заблокируют выполнение.
read в базовом потоке возвращает -1 для указания конца файла, этот метод возвращает -1. В противном случае этот метод возвращает количество фактически прочитанных байтов. Подклассы этого класса рекомендуются, но не обязательны, для попытки прочитать как можно больше байтов таким же образом.
- Переопределяет:
-
readв классеFilterInputStream - Параметры:
-
b- целевой буфер. -
off- смещение, с которого следует начать сохранение байтов. -
len- максимальное количество байтов для чтения. - Возвращает:
- количество прочитанных байтов или
-1, если достигнут конец потока. - Исключения:
-
IOException- если этот входной поток был закрыт вызовом его методаclose(), или произошла ошибка ввода-вывода. - См. также:
FilterInputStream.in
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()
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
© 1993, 2020, 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/11/docs/api/java.base/java/io/BufferedInputStream.html