Spec-Zone.ru › OpenJDK 21

Класс ByteArrayInputStream

java.lang.Object
java.io.InputStream
java.io.ByteArrayInputStream
Все реализованные интерфейсы:
Closeable, AutoCloseable
public class ByteArrayInputStream extends InputStream
A 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 установку/сброс метки.
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 in class 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 in class 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 in class 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 in class InputStream
Parameters:
b - массив байтов, в который читаются данные
off - начальное смещение в b для записи данных
len - максимальное количество байтов для чтения
Returns:
фактическое количество прочитанных байтов в буфер

skip

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

доступно

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

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

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

markSupported

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

метка

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

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

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

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

сброс

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

закрыть

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

© 1993, 2023, 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/21/docs/api/java.base/java/io/ByteArrayInputStream.html

Spec-Zone.ru

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