Spec-Zone.ru › OpenJDK 25

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

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

buf

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

pos

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

mark

protected int mark
Текущая отмеченная позиция в потоке. При создании объектов ByteArrayInputStream по умолчанию отмечается позиция ноль. Метод 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, если смещение не было задано).

Примечание: 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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/ByteArrayInputStream.html

Spec-Zone.ru

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