Spec-Zone.ru › OpenJDK 24

Класс 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 быть прочитаны повторно, прежде чем новые байты будут взяты из содержащегося потока ввода.
Примечание API:
После обертывания в BufferedInputStream, базовый InputStream не должен использоваться напрямую и не должен быть обернут другим потоком.
С:
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, skipNBytes, 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(), или произошла ошибка ввода/вывода.
IndexOutOfBoundsException - Если off отрицательно, len отрицательно или len больше, чем b.length - off
См. также:
  • FilterInputStream.in

skip

public long skip(long n) throws IOException
См. общий контракт метода skip класса InputStream.
Переопределяет:
skip в классе FilterInputStream
Параметры:
n - количество байтов, которые нужно пропустить.
Возвращает:
фактическое количество пропущенных байтов.
Исключения:
IOException - если этот поток ввода был закрыт путём вызова его метода close(), in.skip(n) вызывает исключение IOException, или произошла ошибка ввода/вывода.
См. также:
  • InputStream.skipNBytes(long)

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, 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/io/BufferedInputStream.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API