Класс 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 | Модификатор и тип | Метод | Описание |
|---|---|---|
static InputStream |
nullInputStream() |
Возвращает новый InputStream, который не считывает байты. |
int |
read |
Считывает некоторое количество байтов из входного потока и сохраняет их в массиве буфера b. |
byte[] |
readNBytes |
Считывает из входного потока до указанного количества байтов. |
void |
skipNBytes |
Пропускает и отбрасывает ровно n байтов данных из этого входного потока. |
long |
transferTo |
Считывает все байты из этого входного потока и записывает их в указанный выходной поток в порядке чтения. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Определяет, равен ли другой объект этому объекту. |
protected void |
finalize() |
Устарело, подлежит удалению: этот элемент API будет удалён в будущей версии. Финализация объявлена устаревшей и будет удалена в одном из следующих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает значение хеш-кода этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно после получения уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно после получения уведомления или прерывания, либо до истечения заданного времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно после получения уведомления или прерывания, либо до истечения заданного времени. |
Подробное описание полей
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.