Spec-Zone.ru › OpenJDK 24

Класс ByteArrayInputStream

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

Закрытие `ByteArrayInputStream` не оказывает никакого влияния. Методы этого класса могут быть вызваны после закрытия потока без генерации исключения.

С:
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()
Проверяет, поддерживает ли этот входной поток операции `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` байтов ввода из этого входного потока.

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

nullInputStream, read, readNBytes, skipNBytes, transferTo

Методы, объявленные в классе java.lang.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, если смещение не было передано).

Since:
1.1

count

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

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

ByteArrayInputStream

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

ByteArrayInputStream

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

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

read

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

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

Specified by:
read в классе InputStream
Returns:
следующий байт данных или -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 не может блокировать.

Overrides:
read в классе InputStream
Parameters:
b - буфер, в который считываются данные.
off - начальное смещение в массиве b, в котором записываются данные.
len - максимальное количество байтов для чтения.
Returns:
общее количество прочитанных байтов в буфер или -1, если больше нет данных из-за достижения конца потока.
Throws:
NullPointerException - Если b равно null.
IndexOutOfBoundsException - Если off отрицательно, len отрицательно или len больше, чем b.length - off
See Also:
  • InputStream.read()

readAllBytes

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

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

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

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

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

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

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 могут находиться в несогласованном состоянии. Сильно рекомендуется немедленно закрыть поток, если произошла ошибка ввода-вывода.

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

skip

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

available

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

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

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

markSupported

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

mark

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

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

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

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

reset

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

close

public void close() throws IOException
Закрытие ByteArrayInputStream не оказывает никакого влияния. Методы в этом классе могут быть вызваны после закрытия потока без генерации IOException.
Specified by:
close в интерфейсе AutoCloseable
Specified by:
close в интерфейсе Closeable
Overrides:
close в классе InputStream
Throws:
IOException - если произошла ошибка ввода-вывода.

© 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/ByteArrayInputStream.html

Spec-Zone.ru

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