Spec-Zone.ru › OpenJDK 17

Класс ByteArrayInputStream

java.lang.Object
java.io.InputStream
java.io.ByteArrayInputStream
Все реализованные интерфейсы:
Closeable, AutoCloseable
public class ByteArrayInputStream extends InputStream
A ByteArrayInputStream содержит внутренний буфер, содержащий байты, которые можно прочитать из потока. Внутренний счётчик отслеживает следующий байт, который должен быть предоставлен методом read.

Закрытие ByteArrayInputStream не оказывает никакого эффекта. Методы в этом классе можно вызывать после закрытия потока без генерации IOException.

С момента:
1.0
См. также:
  • StringBufferInputStream

Краткое описание полей

Модификатор и тип Поле Описание
protected byte[] buf
Массив байтов, предоставленный создателем потока.
protected int count
Индекс, на единицу больший, чем последний допустимый символ в буфере потока ввода.
protected int mark
Текущая отмеченная позиция в потоке.
protected int pos
Индекс следующего символа для чтения из буфера потока ввода.

Краткое описание конструкторов

Конструктор Описание
ByteArrayInputStream(byte[] buf)
Создаёт ByteArrayInputStream таким образом, что он использует buf в качестве массива буфера.
ByteArrayInputStream(byte[] buf, int offset, int length)
Создаёт ByteArrayInputStream, который использует buf в качестве массива буфера.

Краткое описание методов

Модификатор и тип Метод Описание
int available()
Возвращает количество оставшихся байтов, которые можно прочитать (или пропустить) из этого потока ввода.
void close()
Закрытие ByteArrayInputStream не оказывает никакого эффекта.
void mark(int readAheadLimit)
Устанавливает текущую отмеченную позицию в потоке.
boolean markSupported()
Проверяет, поддерживает ли этот InputStream функцию mark/reset.
int read()
Считывает следующий байт данных из этого потока ввода.
int read(byte[] b, int off, int len)
Считывает до len байтов данных в массив байтов из этого потока ввода.
byte[] readAllBytes()
Считывает все оставшиеся байты из потока ввода.
int readNBytes(byte[] b, int off, int len)
Считывает запрошенное количество байтов из потока ввода в заданный массив байтов.
void reset()
Сбрасывает буфер до отмеченной позиции.
long skip(long n)
Пропускает n байтов ввода из этого потока ввода.

Методы, объявленные в классе java.io.InputStream

nullInputStream, read, readNBytes, skipNBytes, transferTo

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание полей

buf

protected byte[] buf
Массив байтов, предоставленный создателем потока. Элементы buf[0] по buf[count-1] — это единственные байты, которые можно читать из потока; элемент buf[pos] — это следующий считываемый байт.

pos

protected int pos
Индекс следующего символа для чтения из буфера входного потока. Это значение должно быть всегда неотрицательным и не больше значения count. Следующий байт для чтения из буфера входного потока будет buf[pos].

mark

protected int mark
Текущая отмеченная позиция в потоке. Объекты ByteArrayInputStream по умолчанию помечаются в позиции ноль при создании. Они могут быть помечены в другой позиции внутри буфера с помощью метода 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:
  • InputStream.read()

readAllBytes

public byte[] readAllBytes()
Описание скопировано из класса: InputStream
Читает все оставшиеся байты из входного потока. Этот метод блокируется, пока не будут прочитаны все оставшиеся байты и не будет обнаружен конец потока, или не произойдёт исключение. Этот метод не закрывает входной поток.

Когда этот поток достигает конца потока, дальнейшие вызовы этого метода вернут пустой массив байтов.

Обратите внимание, что этот метод предназначен для простых случаев, когда удобно считать все байты в массив байтов. Он не предназначен для чтения входных потоков с большим количеством данных.

Поведение в случае, когда входной поток асинхронно закрывается, или поток прерывается во время чтения, сильно зависит от входного потока и поэтому не определено.

Если при чтении из входного потока произошла ошибка ввода-вывода, то это может произойти после чтения некоторых, но не всех, байтов. Следовательно, входной поток может не находиться в конце потока и может быть в несогласованном состоянии. Сильно рекомендуется немедленно закрыть поток, если произошла ошибка ввода-вывода.

Overrides:
readAllBytes в классе InputStream
Returns:
массив байтов, содержащий байты, прочитанные из этого входного потока

readNBytes

public int readNBytes(byte[] b, int off, int len)
Описание скопировано из класса: InputStream
Читает нужное количество байтов из входного потока в заданный массив байтов. Этот метод блокируется, пока не будут прочитаны len байта входных данных, не будет обнаружен конец потока или не произойдёт исключение. Возвращается количество фактически прочитанных байтов, возможно ноль. Этот метод не закрывает входной поток.

В случае, если конец потока достигнут до чтения 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:
  • InputStream.skipNBytes(long)

доступно

public int available()
Возвращает количество оставшихся байтов, которые можно прочитать (или пропустить) из этого потока ввода.

Возвращаемое значение равно count - pos, что является количеством байтов, оставшихся для чтения из буфера ввода.

Переопределяет:
available в классе InputStream
Возвращает:
количество оставшихся байтов, которые можно прочитать (или пропустить) из этого потока ввода без блокировки.

markSupported

public boolean markSupported()
Проверяет, поддерживает ли этот InputStream метки/сброс. Метод markSupported класса ByteArrayInputStream всегда возвращает true.
Переопределяет:
markSupported в классе InputStream
Возвращает:
true если этот поток поддерживает методы метки и сброса; false в противном случае.
С:
1.1
См. также:
  • InputStream.mark(int)
  • InputStream.reset()

метка

public void mark(int readAheadLimit)
Устанавливает текущую помеченную позицию в потоке. Объекты ByteArrayInputStream по умолчанию помечаются в позиции ноль при создании. С помощью этого метода они могут быть помечены в другой позиции в буфере.

Если метка не была установлена, то значение метки равно смещению, переданному в конструктор (или 0, если смещение не было указано).

Примечание: значение readAheadLimit для этого класса не имеет смысла.

Переопределяет:
mark в классе InputStream
Параметры:
readAheadLimit - максимальное ограничение байтов, которые можно прочитать, прежде чем позиция метки станет недействительной.
С:
1.1
См. также:
  • InputStream.reset()

сброс

public void reset()
Сбрасывает буфер до помеченной позиции. Помеченная позиция равна 0, если не была помечена другая позиция или смещение не было указано в конструкторе.
Переопределяет:
reset в классе InputStream
См. также:
  • InputStream.mark(int)
  • IOException

закрыть

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API