Класс 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(byte[] buf,
int offset,
int length) | Создаёт |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
int | available() | Возвращает количество оставшихся байтов, которые можно прочитать (или пропустить) из этого входного потока. |
void | close() | Закрытие |
void | mark(int readAheadLimit) | Устанавливает текущую помеченную позицию в потоке. |
boolean | markSupported() | Проверяет, поддерживает ли этот |
int | read() | Читает следующий байт данных из этого входного потока. |
int | read(byte[] b,
int off,
int len) | Читает до |
void | reset() | Сбрасывает буфер до помеченной позиции. |
long | skip(long 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