Класс 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 операции mark/reset. |
int |
read() |
Читает следующий байт данных из этого входного потока. |
int |
read |
Читает из этого входного потока до len байтов данных в массив байтов. |
byte[] |
readAllBytes() |
Читает все оставшиеся байты из входного потока. |
int |
readNBytes |
Читает из входного потока запрошенное количество байтов в указанный массив байтов. |
void |
reset() |
Сбрасывает буфер к отмеченной позиции. |
long |
skip |
Пропускает n байтов входных данных из этого входного потока. |
Методы, объявленные в классе 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, если смещение не было задано).
- Начиная с версии:
- 1.1
count
protected int count
buf. Оно на единицу больше позиции последнего байта в buf, который может быть прочитан из входного буфера потока.Подробное описание конструкторов
ByteArrayInputStream
public ByteArrayInputStream(byte[] buf)
ByteArrayInputStream, используя buf в качестве массива буфера. Массив буфера не копируется. Начальное значение pos равно 0, а начальное значение count равно длине buf.- Параметры:
-
buf— входной буфер.
ByteArrayInputStream
public ByteArrayInputStream(byte[] buf, int offset, int length)
ByteArrayInputStream, использующий buf в качестве массива буфера. Начальное значение pos равно offset, а начальное значение count равно минимуму offset+length и buf.length. Массив буфера не копируется. Отметка буфера устанавливается в указанное смещение.- Параметры:
-
buf— входной буфер. -
offset— смещение первого считываемого байта в буфере. -
length— максимальное количество байтов для чтения из буфера.
Подробное описание методов
read
public int read()
int в диапазоне от 0 до 255. Если байты недоступны, поскольку достигнут конец потока, возвращается значение -1. Этот read метод не может блокироваться.
- Определён в:
-
readв классеInputStream - Возвращает:
- следующий байт данных или
-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 метод не может блокироваться.
- Переопределяет:
-
readв классеInputStream - Параметры:
-
b— буфер, в который считываются данные. -
off— начальное смещение в массивеb, по которому записываются данные. -
len— максимальное количество байтов для чтения. - Возвращает:
- общее количество байтов, считанных в буфер, или
-1, если данных больше нет, поскольку достигнут конец потока. - Выбрасывает:
-
NullPointerException— еслиbравноnull. -
IndexOutOfBoundsException— еслиoffотрицательно,lenотрицательно илиlenбольшеb.length - off - См. также:
readAllBytes
public byte[] readAllBytes()
InputStreamКогда этот поток достигает конца, последующие вызовы этого метода возвращают пустой массив байтов.
Обратите внимание: этот метод предназначен для простых случаев, когда удобно считать все байты в массив байтов. Он не предназначен для чтения входных потоков с большими объёмами данных.
Поведение в случае асинхронного закрытия входного потока или прерывания потока выполнения во время чтения в значительной степени зависит от входного потока и поэтому не специфицировано.
Если при чтении из входного потока происходит ошибка ввода-вывода, она может возникнуть после считывания некоторых, но не всех байтов. Следовательно, входной поток может не находиться в конце и может быть в несогласованном состоянии. Настоятельно рекомендуется незамедлительно закрыть поток при возникновении ошибки ввода-вывода.
- Переопределяет:
-
readAllBytesв классеInputStream - Возвращает:
- массив байтов, содержащий байты, считанные из этого входного потока
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 могут находиться в несогласованном состоянии. Настоятельно рекомендуется незамедлительно закрыть поток при возникновении ошибки ввода-вывода.
- Переопределяет:
-
readNBytesв классеInputStream - Параметры:
-
b— массив байтов, в который считываются данные -
off— начальное смещение вb, по которому записываются данные -
len— максимальное количество байтов для чтения - Возвращает:
- фактическое количество байтов, считанных в буфер
skip
public long skip(long n)
n байтов входных данных из этого входного потока. Если достигнут конец входного потока, может быть пропущено меньше байтов. Фактическое количество пропускаемых байтов k равно меньшему из n и count-pos. Значение k прибавляется к pos, а k возвращается.- Переопределяет:
-
skipв классеInputStream - Параметры:
-
n— количество байтов для пропуска. - Возвращает:
- фактическое количество пропущенных байтов.
- См. также:
available
public int available()
Возвращаемое значение — count - pos, то есть количество байтов, оставшихся для чтения во входном буфере.
- Переопределяет:
-
availableв классеInputStream - Возвращает:
- количество оставшихся байтов, которые можно прочитать (или пропустить) из этого входного потока без блокировки.
markSupported
public boolean markSupported()
InputStream операции mark/reset.- Переопределяет:
-
markSupportedв классеInputStream - Требования к реализации:
- Метод
markSupportedклассаByteArrayInputStreamвсегда возвращаетtrue. - Возвращает:
- true
- Начиная с версии:
- 1.1
- См. также:
mark
public void mark(int readAheadLimit)
Если отметка не была установлена, её значение равно смещению, переданному конструктору (или 0, если смещение не было задано).
Примечание: readAheadLimit для этого класса не имеет значения.
- Переопределяет:
-
markв классеInputStream - Параметры:
-
readAheadLimit— максимальное количество байтов, которое можно прочитать до того, как отметка станет недействительной. - Начиная с версии:
- 1.1
- См. также:
reset
public void reset()
- Переопределяет:
-
resetв классеInputStream - См. также:
close
public void close() throws IOException
ByteArrayInputStream не оказывает никакого эффекта. Методы этого класса можно вызывать после закрытия потока, не вызывая IOException.- Определён в:
-
closeв интерфейсеAutoCloseable - Определён в:
-
closeв интерфейсеCloseable - Переопределяет:
-
closeв классеInputStream - Выбрасывает:
-
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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/ByteArrayInputStream.html