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

Максимальный объём предзагрузки, разрешённый после вызова метода mark, прежде чем последующие вызовы метода reset завершатся неудачно.

protected int markpos

Значение поля pos на момент вызова последнего метода mark.

protected int pos

Текущая позиция в буфере.

Поля, объявленные в классе java.io.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.

Методы, объявленные в классе 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.

См. также:
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(), или произошла ошибка ввода-вывода.
См. также:
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

Spec-Zone .ru
спецификации, руководства, описания, API