Класс 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 байтов ввода из этого потока ввода. |
Методы, объявленные в классе 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()
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:
доступно
public int available()
Возвращаемое значение равно count - pos, что является количеством байтов, оставшихся для чтения из буфера ввода.
- Переопределяет:
-
availableв классеInputStream - Возвращает:
- количество оставшихся байтов, которые можно прочитать (или пропустить) из этого потока ввода без блокировки.
markSupported
public boolean markSupported()
InputStream метки/сброс. Метод markSupported класса ByteArrayInputStream всегда возвращает true. - Переопределяет:
-
markSupportedв классеInputStream - Возвращает:
-
trueесли этот поток поддерживает методы метки и сброса;falseв противном случае. - С:
- 1.1
- См. также:
метка
public void mark(int readAheadLimit)
Если метка не была установлена, то значение метки равно смещению, переданному в конструктор (или 0, если смещение не было указано).
Примечание: значение readAheadLimit для этого класса не имеет смысла.
- Переопределяет:
-
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, 2021, 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/17/docs/api/java.base/java/io/ByteArrayInputStream.html