Класс 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 функцию mark/reset.

int read()

Читает следующий байт данных из этого входного потока.

int read​(byte[] b, int off, int len)

Читает до len байтов данных в массив байтов из этого входного потока.

void reset()

Сбрасывает буфер до помеченной позиции.

long skip​(long n)

Пропускает n байтов ввода из этого входного потока.

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

nullInputStream, read, readAllBytes, readNBytes, readNBytes, 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 возвращается.

Этот метод 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()

skip

public long skip(long n)

Пропускает n байтов ввода из этого входного потока. Меньшее количество байтов может быть пропущено, если достигнут конец входного потока. Фактическое количество k пропускаемых байтов равно меньшему из n и count-pos . Значение k добавляется в pos , и k возвращается.

Overrides:
skip в классе InputStream
Parameters:
n - количество байтов для пропуска.
Returns:
фактическое количество пропущенных байтов.

available

public int available()

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

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

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

markSupported

public boolean markSupported()

Проверяет, поддерживает ли этот InputStream метку/сброс. Метод markSupported класса ByteArrayInputStream всегда возвращает true.

Overrides:
markSupported в классе InputStream
Returns:
true , если этот поток поддерживает методы метки и сброса; false в противном случае.
Since:
1.1
See Also:
InputStream.mark(int), InputStream.reset()

mark

public void mark(int readAheadLimit)

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

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

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

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

reset

public void reset()

Возвращает буфер в отмеченную позицию. Отмеченная позиция — 0, если другая позиция не была отмечена или смещение не было указано в конструкторе.

Overrides:
reset в классе InputStream
See Also:
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, 2020, 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/11/docs/api/java.base/java/io/ByteArrayInputStream.html

Spec-Zone .ru
спецификации, руководства, описания, API