Spec-Zone.ru › OpenJDK 27

Класс ByteArrayInputStream

java.lang.Object
java.io.InputStream
java.io.ByteArrayInputStream
Все реализованные интерфейсы:
Closeable, AutoCloseable
public class ByteArrayInputStream extends InputStream
ByteArrayInputStream содержит внутренний буфер, в котором хранятся байты, доступные для чтения из потока. Внутренний счётчик отслеживает следующий байт, который будет передан методом read.

Закрытие ByteArrayInputStream не имеет эффекта. Методы этого класса можно вызывать после закрытия потока, не вызывая IOException.

Начиная с:
1.0
См. также:
  • StringBufferInputStream

Краткое описание полей

Модификатор и тип Поле Описание
protected byte[] buf
Массив байтов, предоставленный создателем потока.
protected int count
Индекс, следующий за последним допустимым байтом во входном буфере потока.
protected int mark
Текущая отмеченная позиция в потоке.
protected int pos
Индекс следующего байта для чтения из входного буфера потока.

Краткое описание конструкторов

Конструктор Описание
ByteArrayInputStream(byte[] buf)
Создаёт ByteArrayInputStream, использующий buf в качестве массива буфера.
ByteArrayInputStream(byte[] buf, int offset, int length)
Создаёт ByteArrayInputStream, использующий buf в качестве массива буфера.

Краткое описание методов

Модификатор и тип Метод Описание
int available()
Возвращает количество оставшихся байтов, которые можно прочитать (или пропустить) из этого входного потока.
void close()
Закрытие ByteArrayInputStream не имеет эффекта.
void mark(int readAheadLimit)
Устанавливает текущую отмеченную позицию в потоке.
boolean markSupported()
Проверяет, поддерживает ли InputStream операции mark/reset.
int read()
Считывает следующий байт данных из этого входного потока.
int read(byte[] b, int off, int len)
Считывает из этого входного потока до len байтов данных в массив байтов.
byte[] readAllBytes()
Считывает все оставшиеся байты из входного потока.
int readNBytes(byte[] b, int off, int len)
Считывает из входного потока запрошенное количество байтов в указанный массив байтов.
void reset()
Сбрасывает буфер к отмеченной позиции.
long skip(long n)
Пропускает n байтов данных из этого входного потока.

Методы, объявленные в классе InputStream

nullInputStream, read, readNBytes, skipNBytes, transferTo
Модификатор и тип Метод Описание
static InputStream nullInputStream()
Возвращает новый InputStream, который не считывает байты.
int read(byte[] b)
Считывает некоторое количество байтов из входного потока и сохраняет их в массиве буфера b.
byte[] readNBytes(int len)
Считывает из входного потока до указанного количества байтов.
void skipNBytes(long n)
Пропускает и отбрасывает ровно n байтов данных из этого входного потока.
long transferTo(OutputStream out)
Считывает все байты из этого входного потока и записывает их в указанный выходной поток в порядке чтения.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Определяет, равен ли другой объект этому объекту.
protected void finalize()
Устарело, подлежит удалению: этот элемент API будет удалён в будущей версии.
Финализация объявлена устаревшей и будет удалена в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает значение хеш-кода этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно после получения уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно после получения уведомления или прерывания, либо до истечения заданного времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно после получения уведомления или прерывания, либо до истечения заданного времени.

Подробное описание полей

buf

protected byte[] buf
Массив байтов, предоставленный создателем потока. Элементы с buf[0] по buf[count-1] — единственные байты, которые могут быть считаны из потока; элемент buf[pos] — следующий байт для чтения.

pos

protected int pos
Индекс следующего байта для чтения из входного буфера потока. Это значение всегда должно быть неотрицательным и не превышать значение count. Следующим байтом для чтения из входного буфера потока будет buf[pos].

mark

protected int mark
Текущая отмеченная позиция в потоке. При создании объектов ByteArrayInputStream по умолчанию отмечается позиция 0. Эту позицию можно изменить на другую позицию в буфере с помощью метода mark(). Текущая позиция буфера устанавливается в эту точку методом reset().

Если отметка не была установлена, значением mark является смещение, переданное конструктору (или 0, если смещение не было указано).

Начиная с:
1.1

count

protected int count
Индекс, следующий за последним допустимым байтом во входном буфере потока. Это значение всегда должно быть неотрицательным и не превышать длину buf. Оно на единицу больше позиции последнего байта в buf, который может быть считан из входного буфера потока.

Подробное описание конструкторов

ByteArrayInputStream

public ByteArrayInputStream(byte[] buf)
Создаёт ByteArrayInputStream, использующий buf в качестве массива буфера. Массив буфера не копируется. Начальное значение pos равно 0, а начальное значение count равно длине buf.
Параметры:
buf — входной буфер.

ByteArrayInputStream

public ByteArrayInputStream(byte[] buf, int offset, int length)
Создаёт ByteArrayInputStream, использующий buf в качестве массива буфера. Начальное значение pos равно offset, а начальное значение count равно минимуму из offset+length и buf.length. Массив буфера не копируется. Отметка буфера устанавливается на указанное смещение.
Параметры:
buf — входной буфер.
offset — смещение в буфере первого байта для чтения.
length — максимальное количество байтов для чтения из буфера.

Подробное описание методов

read

public int read()
Считывает следующий байт данных из этого входного потока. Значение байта возвращается как int в диапазоне от 0 до 255. Если байтов нет, поскольку достигнут конец потока, возвращается значение -1.

Этот метод read не может блокироваться.

Определено в:
read в классе InputStream
Возвращает:
следующий байт данных или -1, если достигнут конец потока.

read

public int read(byte[] b, int off, int len)
Считывает из этого входного потока до len байтов данных в массив байтов. Если pos равно count, возвращается -1, указывая на конец файла. В противном случае количество считанных байтов k равно меньшему из len и count-pos. Если k положительно, байты с buf[pos] по buf[pos+k-1] копируются в b[off] — b[off+k-1] так же, как при выполнении System.arraycopy. Значение k добавляется к pos, после чего возвращается k.

В отличие от overridden method класса InputStream, этот метод возвращает -1 вместо нуля, если достигнут конец потока и len == 0.

Этот метод read не может блокироваться.

Переопределяет:
read в классе InputStream
Параметры:
b — буфер, в который считываются данные.
off — начальное смещение в массиве b, с которого записываются данные.
len — максимальное количество байтов для чтения.
Возвращает:
общее количество байтов, считанных в буфер, или -1, если данных больше нет, поскольку достигнут конец потока.
Вызывает:
NullPointerException — если b равно null.
IndexOutOfBoundsException — если off отрицательно, len отрицательно или len больше b.length - off
См. также:
  • InputStream.read()

readAllBytes

public byte[] readAllBytes()
Описание скопировано из класса: InputStream
Считывает все оставшиеся байты из входного потока. Этот метод блокируется до тех пор, пока не будут считаны все оставшиеся байты и не будет обнаружен конец потока либо не будет выброшено исключение. Этот метод не закрывает входной поток.

Когда этот поток достигает конца, последующие вызовы метода возвращают пустой массив байтов.

Обратите внимание, что этот метод предназначен для простых случаев, когда удобно считать все байты в массив байтов. Он не предназначен для чтения входных потоков с большими объёмами данных.

Поведение в случае асинхронного закрытия входного потока или прерывания потока во время чтения в значительной степени зависит от конкретного входного потока и поэтому не определено.

Если при чтении из входного потока возникает ошибка ввода-вывода, она может произойти после чтения части, но не всех байтов. Следовательно, входной поток может не достичь конца и оказаться в несогласованном состоянии. При возникновении ошибки ввода-вывода настоятельно рекомендуется незамедлительно закрыть поток.

Переопределяет:
readAllBytes в классе InputStream
Возвращает:
массив байтов, содержащий байты, считанные из этого входного потока

readNBytes

public int readNBytes(byte[] b, int off, int len)
Описание скопировано из класса: InputStream
Считывает запрошенное количество байтов из входного потока в указанный массив байтов. Этот метод блокируется до тех пор, пока не будут считаны len байтов входных данных, не будет обнаружен конец потока либо не будет выброшено исключение. Возвращается фактически считанное количество байтов, которое может быть равно нулю. Этот метод не закрывает входной поток.

Если конец потока достигнут до того, как считано len байтов, возвращается фактически считанное количество байтов. Когда этот поток достигает конца, последующие вызовы этого метода возвращают ноль.

Если len равно нулю, байты не считываются и возвращается 0; в противном случае предпринимается попытка считать до len байтов.

Первый считанный байт сохраняется в элементе b[off], следующий — в b[off+1] и так далее. Считанное количество байтов не превышает len. Пусть k — фактически считанное количество байтов; эти байты будут сохранены в элементах с b[off] по b[off+k-1], а элементы с b[off+k ] по b[off+len-1] останутся без изменений.

Поведение в случае асинхронного закрытия входного потока или прерывания потока во время чтения в значительной степени зависит от конкретного входного потока и поэтому не определено.

Если при чтении из входного потока возникает ошибка ввода-вывода, она может произойти после того, как данные из входного потока обновят часть, но не все байты b. Следовательно, входной поток и b могут оказаться в несогласованном состоянии. При возникновении ошибки ввода-вывода настоятельно рекомендуется незамедлительно закрыть поток.

Переопределяет:
readNBytes в классе InputStream
Параметры:
b — массив байтов, в который считываются данные
off — начальное смещение в b, с которого записываются данные
len — максимальное количество байтов для чтения
Возвращает:
фактическое количество байтов, считанных в буфер

skip

public long skip(long n)
Пропускает n байтов данных из этого входного потока. Если достигнут конец входного потока, может быть пропущено меньше байтов. Фактическое количество пропускаемых байтов k равно меньшему из n и count-pos. Значение k добавляется к pos, после чего возвращается k.
Переопределяет:
skip в классе InputStream
Параметры:
n — количество байтов для пропуска.
Возвращает:
фактическое количество пропущенных байтов.
См. также:
  • InputStream.skipNBytes(long)

available

public int available()
Возвращает количество оставшихся байтов, которые можно прочитать (или пропустить) из этого входного потока.

Возвращаемое значение — count - pos, то есть количество байтов, оставшихся для чтения во входном буфере.

Переопределяет:
available в классе InputStream
Возвращает:
количество оставшихся байтов, которые можно прочитать (или пропустить) из этого входного потока без блокировки.

markSupported

public boolean markSupported()
Проверяет, поддерживает ли InputStream операции mark/reset.
Переопределяет:
markSupported в классе InputStream
Требования к реализации:
Метод markSupported класса ByteArrayInputStream всегда возвращает true.
Возвращает:
true
Начиная с:
1.1
См. также:
  • InputStream.mark(int)
  • InputStream.reset()

mark

public void mark(int readAheadLimit)
Устанавливает текущую отмеченную позицию в потоке. При создании объектов ByteArrayInputStream по умолчанию отмечается позиция 0. С помощью этого метода отметку можно установить на другую позицию в буфере.

Если отметка не была установлена, её значением является смещение, переданное конструктору (или 0, если смещение не было указано).

Примечание: readAheadLimit для этого класса не имеет смысла.

Переопределяет:
mark в классе InputStream
Параметры:
readAheadLimit — максимальное количество байтов, которое можно считать до того, как позиция отметки станет недействительной.
Начиная с:
1.1
См. также:
  • InputStream.reset()

reset

public void reset()
Сбрасывает буфер к отмеченной позиции. Отмеченная позиция равна 0, если не была отмечена другая позиция или в конструкторе не было указано смещение.
Переопределяет:
reset в классе InputStream
См. также:
  • InputStream.mark(int)
  • IOException

close

public void close() throws IOException
Закрытие ByteArrayInputStream не имеет эффекта. Методы этого класса можно вызывать после закрытия потока, не вызывая IOException.
Определено в:
close в интерфейсе AutoCloseable
Определено в:
close в интерфейсе Closeable
Переопределяет:
close в классе InputStream
Вызывает:
IOException — при возникновении ошибки ввода-вывода.

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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