Класс ByteArrayInputStream
- Все реализованные интерфейсы:
-
Closeable,AutoCloseable
public class ByteArrayInputStream extends InputStream
Закрытие `ByteArrayInputStream` не оказывает никакого влияния. Методы этого класса могут быть вызваны после закрытия потока без генерации исключения.
- С:
- 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() |
Проверяет, поддерживает ли этот входной поток операции `mark` и `reset`. |
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:
-
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:
readAllBytes
public byte[] readAllBytes()
InputStreamКогда этот поток достигает конца потока, дальнейшие вызовы этого метода вернут пустой массив байтов.
Обратите внимание, что этот метод предназначен для простых случаев, когда удобно прочитать все байты в массив байтов. Он не предназначен для чтения входных потоков с большими объёмами данных.
Поведение в случае, когда входной поток асинхронно закрывается, или поток прерывается во время чтения, сильно зависит от конкретного входного потока и поэтому не определено.
Если при чтении из входного потока произошла ошибка ввода-вывода, то это может произойти после прочтения некоторых, но не всех, байтов. В результате, входной поток может не быть в состоянии конца потока и может находиться в несогласованном состоянии. Сильно рекомендуется немедленно закрыть поток, если произошла ошибка ввода-вывода.
- Overrides:
-
readAllBytesв классеInputStream - 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:
-
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:
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
- См. также:
mark
public void mark(int readAheadLimit)
Если метка не была установлена, то значение метки равно смещению, переданному в конструктор (или 0, если смещение не было указано).
Примечание: Значение readAheadLimit для этого класса не имеет смысла.
- Overrides:
-
markв классеInputStream - Параметры:
-
readAheadLimit- максимальное ограничение байтов, которые можно прочитать, прежде чем позиция метки станет недействительной. - Since:
- 1.1
- См. также:
reset
public void reset()
- Overrides:
-
resetв классеInputStream - См. также:
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