Класс ByteArrayInputStream
- Все реализованные интерфейсы:
-
Closeable,AutoCloseable
public class ByteArrayInputStream extends InputStream
ByteArrayInputStream содержит внутренний буфер, содержащий байты, которые можно считать из потока. Внутренний счётчик отслеживает следующий байт, который должен быть предоставлен методом read. Закрытие ByteArrayInputStream не оказывает никакого влияния. Методы в этом классе можно вызывать после закрытия потока без генерации IOException.
- С тех пор:
- 1.0
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected byte[] |
buf |
Массив байтов, предоставленный создателем потока. |
protected int |
count |
Индекс, на один больше последнего допустимого байта в буфере входного потока. |
protected int |
mark |
Текущая помеченная позиция в потоке. |
protected int |
pos |
Индекс следующего байта для чтения из буфера входного потока. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
ByteArrayInputStream |
Создаёт ByteArrayInputStream, используя buf в качестве массива буфера. |
ByteArrayInputStream |
Создаёт ByteArrayInputStream, используя buf в качестве массива буфера. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
available() |
Возвращает количество оставшихся байтов, которые можно прочитать (или пропустить) из этого входного потока. |
void |
close() |
Закрытие ByteArrayInputStream не оказывает никакого влияния. |
void |
mark |
Устанавливает текущую помеченную позицию в потоке. |
boolean |
markSupported() |
Проверяет, поддерживает ли этот InputStream установку/сброс метки. |
int |
read() |
Считывает следующий байт данных из этого входного потока. |
int |
read |
Считывает до len байтов данных в массив байтов из этого входного потока. |
byte[] |
readAllBytes() |
Считывает все оставшиеся байты из входного потока. |
int |
readNBytes |
Считывает запрошенное количество байтов из входного потока в заданный массив байтов. |
void |
reset() |
Сбрасывает буфер до помеченной позиции. |
long |
skip |
Пропускает n байтов входных данных из этого входного потока. |
Методы, объявленные в классе java.io.InputStream
nullInputStream, read, readNBytes, skipNBytes, transferTo
Подробное описание полей
buf
protected byte[] buf
buf[0] по buf[count-1] — единственные байты, которые могут быть прочитаны из потока; элемент buf[pos] — следующий байт для чтения.pos
protected int pos
count. Следующий байт для чтения из буфера входного потока будет buf[pos].mark
protected int mark
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:
-
readin classInputStream - 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:
-
readin classInputStream - Parameters:
-
b- буфер, в который читаются данные. -
off- начальное смещение в массивеbдля записи данных. -
len- максимальное количество байтов для чтения. - Returns:
- общее количество прочитанных байтов в буфер или
-1если больше нет данных, потому что достигнут конец потока. - Throws:
-
NullPointerException- Еслиbравноnull. -
IndexOutOfBoundsException- Еслиoffотрицательно,lenотрицательно илиlenбольшеb.length - off - See Also:
readAllBytes
public byte[] readAllBytes()
InputStreamКогда этот поток достигает конца потока, дальнейшие вызовы этого метода будут возвращать пустой массив байтов.
Обратите внимание, что этот метод предназначен для простых случаев, когда удобно считать все байты в массив байтов. Он не предназначен для чтения входных потоков с большими объемами данных.
Поведение в случае, когда входной поток асинхронно закрывается или поток прерывается во время чтения, сильно зависит от конкретного входного потока и поэтому не определено.
Если при чтении из входного потока произойдет ошибка ввода-вывода, это может произойти после чтения некоторых, но не всех байтов. Следовательно, входной поток может не находиться в конце потока и может быть в несогласованном состоянии. Сильно рекомендуется немедленно закрыть поток, если произойдет ошибка ввода-вывода.
- Overrides:
-
readAllBytesin classInputStream - Returns:
- массив байтов, содержащий прочитанные из этого входного потока байты
readNBytes
public int readNBytes(byte[] b, int off, int len)
InputStreamlen байтов входных данных не будут прочитаны, не будет обнаружен конец потока или не будет выброшено исключение. Возвращается количество фактически прочитанных байтов, возможно ноль. Этот метод не закрывает входной поток. В случае, если конец потока достигнут до того, как 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:
-
readNBytesin classInputStream - Parameters:
-
b- массив байтов, в который читаются данные -
off- начальное смещение вbдля записи данных -
len- максимальное количество байтов для чтения - Returns:
- фактическое количество прочитанных байтов в буфер
skip
public long skip(long n)
n байтов входных данных из этого входного потока. Меньшее количество байтов может быть пропущено, если достигнут конец входного потока. Фактическое количество k пропущенных байтов равно меньшему из n и count-pos. Значение k добавляется к pos и возвращается k.- Overrides:
-
skipin classInputStream - Parameters:
-
n- количество байтов для пропуска. - Returns:
- фактическое количество пропущенных байтов.
- See Also:
доступно
public int available()
Возвращаемое значение — count - pos, которое представляет количество байтов, оставшихся для чтения из буфера ввода.
- Переопределяет:
-
availableв классеInputStream - Возвращает:
- количество оставшихся байтов, которые можно прочитать (или пропустить) из этого потока ввода без блокировки.
markSupported
public boolean markSupported()
InputStream метки/сброс.- Переопределяет:
-
markSupportedв классеInputStream - Требования к реализации:
- Метод
markSupportedклассаByteArrayInputStreamвсегда возвращаетtrue. - Возвращает:
- true
- С:
- 1.1
- См. также:
метка
public void mark(int readAheadLimit)
Если метка не была установлена, то значение метки — смещение, переданное в конструктор (или 0, если смещение не было предоставлено).
Примечание: Пометка для этого класса не имеет смысла.
- Переопределяет:
-
markв классеInputStream - Параметры:
-
readAheadLimit- максимальное ограничение байтов, которые могут быть прочитаны, прежде чем позиция метки станет недопустимой. - С:
- 1.1
- См. также:
сброс
public void reset()
- Переопределяет:
-
resetв классеInputStream - См. также:
закрыть
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