Класс ByteArrayInputStream
- java.lang.Object
-
- java.io.InputStream
-
- java.io.ByteArrayInputStream
- Все реализованные интерфейсы:
- Closeable, AutoCloseable
public class ByteArrayInputStream extends InputStream
A ByteArrayInputStream содержит внутренний буфер, содержащий байты, которые могут быть прочитаны из потока. Внутренний счётчик отслеживает следующий байт, который должен быть предоставлен методом read.
Закрытие ByteArrayInputStream не имеет эффекта. Методы в этом классе могут быть вызваны после закрытия потока без генерации IOException.
- С тех пор:
- JDK1.0
- См. также:
StringBufferInputStream
Поля
| Модификатор и тип | Поле и описание |
|---|---|
protected byte[] |
buf Массив байтов, предоставленный создателем потока. |
protected int |
count Индекс, на единицу больший, чем последний допустимый символ в буфере входного потока. |
protected int |
mark Текущая отмеченная позиция в потоке. |
protected int |
pos Индекс следующего символа для чтения из буфера входного потока. |
Конструкторы
| Конструктор и описание |
|---|
ByteArrayInputStream(byte[] buf) Создаёт |
ByteArrayInputStream(byte[] buf,
int offset,
int length) Создаёт |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
int |
available() Возвращает количество оставшихся байтов, которые могут быть прочитаны (или пропущены) из этого входного потока. |
void |
close() Закрытие |
void |
mark(int readAheadLimit) Устанавливает текущую отмеченную позицию в потоке. |
boolean |
markSupported() Проверяет, поддерживает ли этот |
int |
read() Читает следующий байт данных из этого входного потока. |
int |
read(byte[] b,
int off,
int len) Читает до |
void |
reset() Сбрасывает буфер до отмеченной позиции. |
long |
skip(long n) Пропускает |
Методы, унаследованные от класса java.io.InputStream
read Методы, унаследованные от класса 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:
- JDK1.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.
Этот метод 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()
skip
public long skip(long n)
Пропускает n байтов входных данных из этого входного потока. Меньшее количество байтов может быть пропущено, если достигнут конец входного потока. Фактическое количество k байтов для пропуска равно меньшему из n и count-pos. Значение k добавляется к pos и возвращается k.
- Overrides:
-
skipв классеInputStream - Parameters:
-
n- количество байтов для пропуска. - Returns:
- фактическое количество пропущенных байтов.
available
public int available()
Возвращает количество оставшихся байтов, которые могут быть прочитаны (или пропущены) из этого входного потока.
Возвращаемое значение — count - pos, которое является количеством байтов, оставшихся для чтения из буфера ввода.
- Overrides:
-
availableв классеInputStream - Returns:
- количество оставшихся байтов, которые могут быть прочитаны (или пропущены) из этого входного потока без блокировки.
markSupported
public boolean markSupported()
Проверяет, поддерживает ли этот InputStream метку/сброс. Метод markSupported класса ByteArrayInputStream всегда возвращает true.
- Overrides:
-
markSupportedв классеInputStream - Returns:
-
true, если этот поток поддерживает методы mark и reset;falseв противном случае. - Since:
- JDK1.1
- See Also:
-
InputStream.mark(int),InputStream.reset()
mark
public void mark(int readAheadLimit)
Устанавливает текущую отмеченную позицию в потоке. Объекты ByteArrayInputStream по умолчанию отмечаются в позиции ноль при создании. Они могут быть отмечены в другой позиции в буфере с помощью этого метода.
Если метка не была установлена, то значение метки — это смещение, переданное в конструктор (или 0, если смещение не было передано).
Примечание: Метка для этого класса не имеет смысла.
- Overrides:
-
markв классеInputStream - Parameters:
-
readAheadLimit- максимальное ограничение байтов, которые могут быть прочитаны, прежде чем позиция метки станет недействительной. - Since:
- JDK1.1
- See Also:
InputStream.reset()
reset
public void reset()
Сбрасывает буфер до отмеченной позиции. Отмеченная позиция — 0, если не была установлена иная позиция или смещение не было указано в конструкторе.
- Overrides:
-
resetв классеInputStream - See Also:
-
InputStream.mark(int),IOException
close
public void close()
throws IOException Закрытие ByteArrayInputStream не имеет эффекта. Методы в этом классе могут вызываться после закрытия потока без генерации IOException.
- Specified by:
-
closeв интерфейсеCloseable - Specified by:
-
closeв интерфейсеAutoCloseable - Overrides:
-
closeв классеInputStream - Throws:
-
IOException- если происходит ошибка ввода-вывода.
© 1993, 2020, 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.