Интерфейс ImageInputStream

Все суперинтерфейсы:
AutoCloseable, Closeable, DataInput
Все известные подинтерфейсы:
ImageOutputStream
Все известные реализующие классы:
FileCacheImageInputStream, FileCacheImageOutputStream, FileImageInputStream, FileImageOutputStream, ImageInputStreamImpl, ImageOutputStreamImpl, MemoryCacheImageInputStream, MemoryCacheImageOutputStream
public interface ImageInputStream
extends DataInput, Closeable

Интерфейс потока ввода с возможностью позиционирования для использования ImageReader. Различные источники ввода, такие как InputStream и File, а также будущие быстрые источники ввода могут быть «обернуты» подходящей реализацией этого интерфейса для использования API ввода-вывода изображений.

См. также:
ImageInputStreamImpl, FileImageInputStream, FileCacheImageInputStream, MemoryCacheImageInputStream

Методы

Модификатор и тип Метод Описание
void close()

Закрывает поток.

void flush()

Отбрасывает начальную позицию потока до текущей позиции потока.

void flushBefore​(long pos)

Отбрасывает начальную часть потока до указанной позиции.

int getBitOffset()

Возвращает текущий битовый смещение, целое число от 0 до 7 включительно.

ByteOrder getByteOrder()

Возвращает порядок байтов, с которым значения данных будут считываться из этого потока, как экземпляр перечисления java.nio.ByteOrder.

long getFlushedPosition()

Возвращает наираньшую позицию в потоке, до которой может быть выполнено перемещение.

long getStreamPosition()

Возвращает текущую байтовую позицию потока.

boolean isCached()

Возвращает true, если этот ImageInputStream кеширует данные для возможности перемещения назад.

boolean isCachedFile()

Возвращает true, если этот ImageInputStream кеширует данные для возможности перемещения назад, и кеш хранится во временном файле.

boolean isCachedMemory()

Возвращает true, если этот ImageInputStream кеширует данные для возможности перемещения назад, и кеш хранится в оперативной памяти.

long length()

Возвращает общую длину потока, если она известна.

void mark()

Помечает позицию в потоке, к которой будет возвращено последующее обращение к reset.

int read()

Считывает один байт из потока и возвращает его как целое число от 0 до 255.

int read​(byte[] b)

Считывает до b.length байтов из потока и сохраняет их в b начиная с индекса 0.

int read​(byte[] b, int off, int len)

Считывает до len байтов из потока и сохраняет их в b начиная с индекса off.

int readBit()

Считывает один бит из потока и возвращает его как int, со значением 0 или 1.

long readBits​(int numBits)

Считывает битовую строку из потока и возвращает её как long, при этом первый считанный бит становится старшим битом результата.

boolean readBoolean()

Считывает байт из потока и возвращает значение boolean true, если оно ненулевое, false если нулевое.

byte readByte()

Считывает байт из потока и возвращает его как значение byte.

void readBytes​(IIOByteBuffer buf, int len)

Считывает до len байтов из потока и изменяет предоставленный IIOByteBuffer для указания массива байтов, смещения и длины, где могут быть найдены данные.

char readChar()

Эквивалентно readUnsignedShort, за исключением того, что результат возвращается с использованием типа данных char.

double readDouble()

Считывает 8 байтов из потока, и (понятийно) конкатенирует их в соответствии с текущим порядком байтов и возвращает результат как double.

float readFloat()

Считывает 4 байта из потока, и (понятийно) конкатенирует их в соответствии с текущим порядком байтов и возвращает результат как float.

void readFully​(byte[] b)

Считывает b.length байтов из потока и сохраняет их в b начиная с индекса 0.

void readFully​(byte[] b, int off, int len)

Считывает len байтов из потока и сохраняет их в b начиная с индекса off.

void readFully​(char[] c, int off, int len)

Считывает len символов (целые 16-битные беззнаковые числа) из потока в соответствии с текущим порядком байтов и сохраняет их в c начиная с индекса off.

void readFully​(double[] d, int off, int len)

Считывает len чисел с плавающей точкой двойной точности (64-битные числа с плавающей точкой IEEE) из потока в соответствии с текущим порядком байтов и сохраняет их в d начиная с индекса off.

void readFully​(float[] f, int off, int len)

Считывает len чисел с плавающей точкой одинарной точности (32-битные числа с плавающей точкой IEEE) из потока в соответствии с текущим порядком байтов и сохраняет их в f начиная с индекса off.

void readFully​(int[] i, int off, int len)

Считывает len целых чисел (целые 32-битные со знаком) из потока в соответствии с текущим порядком байтов и сохраняет их в i начиная с индекса off.

void readFully​(long[] l, int off, int len)

Считывает len длинных целых чисел (целые 64-битные со знаком) из потока в соответствии с текущим порядком байтов и сохраняет их в l начиная с индекса off.

void readFully​(short[] s, int off, int len)

Считывает len коротких целых чисел (целые 16-битные со знаком) из потока в соответствии с текущим порядком байтов и сохраняет их в s начиная с индекса off.

int readInt()

Считывает 4 байта из потока, (понятийно) конкатенирует их в соответствии с текущим порядком байтов и возвращает результат как int.

String readLine()

Считывает следующую строку текста из входного потока.

long readLong()

Считывает 8 байтов из потока и (понятийно) конкатенирует их в соответствии с текущим порядком байтов, и возвращает результат как long.

short readShort()

Считывает два байта из потока, и (понятийно) конкатенирует их в соответствии с текущим порядком байтов, и возвращает результат как значение short.

int readUnsignedByte()

Считывает байт из потока и (понятийно) преобразует его в целое число, маскирует его 0xff для удаления каких-либо битов расширения знака и возвращает его как значение byte.

long readUnsignedInt()

Считывает 4 байта из потока, и (понятийно) конкатенирует их в соответствии с текущим порядком байтов, преобразует результат в длинное целое число, маскирует его 0xffffffffL для удаления каких-либо битов расширения знака и возвращает результат как беззнаковое значение long.

int readUnsignedShort()

Считывает два байта из потока, и (понятийно) конкатенирует их в соответствии с текущим порядком байтов, преобразует полученное значение в int, маскирует его 0xffff для удаления каких-либо битов расширения знака и возвращает результат как беззнаковое значение int.

String readUTF()

Считывает строку, закодированную в формате изменённого UTF-8.

void reset()

Возвращает указатель потока к его предыдущей позиции, включая битовое смещение, на момент последнего несоответствующего вызова mark.

void seek​(long pos)

Устанавливает текущую позицию потока в нужное местоположение.

void setBitOffset​(int bitOffset)

Устанавливает битовое смещение на целое число от 0 до 7 включительно.

void setByteOrder​(ByteOrder byteOrder)

Устанавливает желаемый порядок байтов для будущих считываний значений данных из этого потока.

int skipBytes​(int n)

Перемещает позицию потока вперёд на заданное количество байтов.

long skipBytes​(long n)

Перемещает позицию потока вперёд на заданное количество байтов.

Методы

setByteOrder

void setByteOrder(ByteOrder byteOrder)

Устанавливает желаемый порядок байтов для будущих чтений значений данных из этого потока. Например, последовательность байтов '0x01 0x02 0x03 0x04', если ее читать как 4-байтовое целое число, будет иметь значение '0x01020304' в сетевом порядке байтов и значение '0x04030201' в обратном порядке байтов.

Перечисление java.nio.ByteOrder используется для указания порядка байтов. Значение ByteOrder.BIG_ENDIAN задаёт так называемый порядок байтов «big-endian» или сетевой порядок байтов, в котором старший байт идёт первым. Процессоры Motorola и Sparc хранят данные в этом формате, а процессоры Intel хранят данные в обратном ByteOrder.LITTLE_ENDIAN порядке.

Порядок байтов не влияет на результаты, возвращаемые методом readBits (или значение, записанное методом ImageOutputStream.writeBits).

Параметры:
byteOrder — одно из значений ByteOrder.BIG_ENDIAN или java.nio.ByteOrder.LITTLE_ENDIAN, указывающее, будет ли использоваться сетевой порядок байтов или его обратный порядок для будущих чтений.
См. также:
ByteOrder, getByteOrder(), readBits(int)

getByteOrder

ByteOrder getByteOrder()

Возвращает порядок байтов, с которым значения данных будут читаться из этого потока, как экземпляр перечисления java.nio.ByteOrder.

Возвращает:
Одно из значений ByteOrder.BIG_ENDIAN или ByteOrder.LITTLE_ENDIAN, указывающее, какой порядок байтов используется.
См. также:
ByteOrder, setByteOrder(java.nio.ByteOrder)

read

int read()
  throws IOException

Считывает один байт из потока и возвращает его как целое число от 0 до 255. Если достигнут конец потока, возвращается -1.

Битовый сдвиг в потоке сбрасывается в ноль перед чтением.

Возвращает:
Значение байта из потока, как int, или -1, чтобы указать EOF.
Исключение:
IOException - если произошла ошибка ввода-вывода.

read

int read(byte[] b)
  throws IOException

Считывает до b.length байтов из потока и записывает их в b начиная с индекса 0. Возвращается количество считанных байтов. Если не удаётся считать байты из-за достижения конца потока, возвращается -1.

Битовый сдвиг в потоке сбрасывается в ноль перед чтением.

Параметры:
b — массив байтов, в который записываются прочитанные данные.
Возвращает:
Количество фактически считанных байтов или -1 для указания EOF.
Исключение:
NullPointerException - если b равно null.
IOException - если произошла ошибка ввода-вывода.

read

int read(byte[] b,
         int off,
         int len)
  throws IOException

Считывает до len байтов из потока и записывает их в b начиная с индекса off. Возвращается количество считанных байтов. Если не удаётся считать байты из-за достижения конца потока, возвращается -1.

Битовый сдвиг в потоке сбрасывается в ноль перед чтением.

Параметры:
b — массив байтов, в который записываются прочитанные данные.
off — начальная позиция в b для записи.
len — максимальное количество byte для чтения.
Возвращает:
Количество фактически считанных байтов или -1 для указания EOF.
Исключение:
NullPointerException - если b равно null.
IndexOutOfBoundsException - если off отрицательно, len отрицательно или off + len больше b.length.
IOException - если произошла ошибка ввода-вывода.

readBytes

void readBytes(IIOByteBuffer buf,
               int len)
        throws IOException

Считывает до len байтов из потока и изменяет переданный IIOByteBuffer для указания массива байтов, смещения и длины, где можно найти данные. Вызывающий метод не должен пытаться изменить данные, найденные в IIOByteBuffer.

Битовый сдвиг в потоке сбрасывается в ноль перед чтением.

Параметры:
buf — объект IIOByteBuffer, который будет изменён.
len — максимальное количество byte для чтения.
Исключение:
IndexOutOfBoundsException - если len отрицательно.
NullPointerException - если buf равно null.
IOException - если произошла ошибка ввода-вывода.

readBoolean

boolean readBoolean()
             throws IOException

Считывает байт из потока и возвращает значение boolean равно true , если он не нулевой, false если он нулевой.

Битовый сдвиг в потоке сбрасывается в ноль перед чтением.

Определено в:
readBoolean в интерфейсе DataInput
Возвращает:
Логическое значение из потока.
Исключение:
EOFException - если достигнут конец потока.
IOException - если произошла ошибка ввода-вывода.

readByte

byte readByte()
       throws IOException

Считывает байт из потока и возвращает его как значение byte. Значения байтов между 0x00 и 0x7f представляют целые значения между 0 и 127. Значения между 0x80 и 0xff представляют отрицательные значения от -128 до /1.

Битовый сдвиг в потоке сбрасывается в ноль перед чтением.

Определено в:
readByte в интерфейсе DataInput
Возвращает:
Знаковое значение байта из потока.
Исключение:
EOFException - если достигнут конец потока.
IOException - если произошла ошибка ввода-вывода.

readUnsignedByte

int readUnsignedByte()
              throws IOException

Считывает байт из потока и (по концепции) преобразует его в целое число, маскирует его 0xff для удаления любых битов расширения знака и возвращает его как значение byte.

Таким образом, значения байтов между 0x00 и 0x7f просто возвращаются как целые значения между 0 и 127. Значения между 0x80 и 0xff, которые обычно представляют отрицательные byte значения, будут отображены в положительные целые числа между 128 и 255.

Битовый сдвиг в потоке сбрасывается в ноль перед чтением.

Определено в:
readUnsignedByte в интерфейсе DataInput
Возвращает:
Беззнаковое значение байта из потока.
Исключение:
EOFException - если достигнут конец потока.
IOException - если произошла ошибка ввода-вывода.

readShort

short readShort()
         throws IOException

Считывает два байта из потока и (по концепции) соединяет их в соответствии с текущим порядком байтов и возвращает результат как значение short.

Битовый сдвиг в потоке сбрасывается в ноль перед чтением.

Определено в:
readShort в интерфейсе DataInput
Возвращает:
Знаковое значение короткого целого числа из потока.
Исключение:
EOFException - если поток достигает конца, прежде чем прочитать все байты.
IOException - если произошла ошибка ввода-вывода.
См. также:
getByteOrder()

readUnsignedShort

int readUnsignedShort()
               throws IOException

Считывает два байта из потока и (по концепции) соединяет их в соответствии с текущим порядком байтов, преобразует полученное значение в целое число, маскирует его с 0xffff для удаления любых битов расширения знака и возвращает результат как беззнаковое значение int.

Битовый сдвиг в потоке сбрасывается в ноль перед чтением.

Определено в:
readUnsignedShort в интерфейсе DataInput
Возвращает:
Беззнаковое значение короткого целого числа из потока, как целое число.
Исключение:
EOFException - если поток достигает конца, прежде чем прочитать все байты.
IOException - если произошла ошибка ввода-вывода.
См. также:
getByteOrder()

readChar

char readChar()
       throws IOException

Эквивалентно readUnsignedShort, за исключением того, что результат возвращается с помощью типа данных char.

Битовый сдвиг в потоке сбрасывается в ноль перед чтением.

Определено в:
readChar в интерфейсе DataInput
Возвращает:
Беззнаковое значение символа из потока.
Исключение:
EOFException - если поток достигает конца, прежде чем прочитать все байты.
IOException - если произошла ошибка ввода-вывода.
См. также:
readUnsignedShort()

readInt

int readInt()
     throws IOException

Считывает 4 байта из потока и (по концепции) объединяет их в соответствии с текущим порядком байтов и возвращает результат как int.

Битовый сдвиг в потоке игнорируется и обрабатывается так, как будто он равен нулю.

Определено в:
readInt в интерфейсе DataInput
Возвращает:
Знаковое целое число из потока.
Исключение:
EOFException - если поток достигает конца, прежде чем прочитать все байты.
IOException - если произошла ошибка ввода-вывода.
См. также:
getByteOrder()

readUnsignedInt

long readUnsignedInt()
              throws IOException

Считывает 4 байта из потока и (понятийно) конкатенирует их в соответствии с текущим порядком байтов, преобразует результат в long, маскирует его с помощью 0xffffffffL для удаления любых битов расширения знака и возвращает результат как беззнаковое значение long.

Позиция бита в потоке сбрасывается до нуля перед чтением.

Возвращает:
беззнаковое целое значение из потока, как long.
Выбрасывает:
EOFException - если поток достигнет конца, прежде чем прочитать все байты.
IOException - если произошла ошибка ввода-вывода.
См. также:
getByteOrder()

readLong

long readLong()
       throws IOException

Считывает 8 байтов из потока и (понятийно) конкатенирует их в соответствии с текущим порядком байтов и возвращает результат как long.

Позиция бита в потоке сбрасывается до нуля перед чтением.

Установлено:
readLong в интерфейсе DataInput
Возвращает:
знаковое значение long из потока.
Выбрасывает:
EOFException - если поток достигнет конца, прежде чем прочитать все байты.
IOException - если произошла ошибка ввода-вывода.
См. также:
getByteOrder()

readFloat

float readFloat()
         throws IOException

Считывает 4 байта из потока и (понятийно) конкатенирует их в соответствии с текущим порядком байтов и возвращает результат как float.

Позиция бита в потоке сбрасывается до нуля перед чтением.

Установлено:
readFloat в интерфейсе DataInput
Возвращает:
значение float из потока.
Выбрасывает:
EOFException - если поток достигнет конца, прежде чем прочитать все байты.
IOException - если произошла ошибка ввода-вывода.
См. также:
getByteOrder()

readDouble

double readDouble()
           throws IOException

Считывает 8 байтов из потока и (понятийно) конкатенирует их в соответствии с текущим порядком байтов и возвращает результат как double.

Позиция бита в потоке сбрасывается до нуля перед чтением.

Установлено:
readDouble в интерфейсе DataInput
Возвращает:
значение double из потока.
Выбрасывает:
EOFException - если поток достигнет конца, прежде чем прочитать все байты.
IOException - если произошла ошибка ввода-вывода.
См. также:
getByteOrder()

readLine

String readLine()
         throws IOException

Считывает следующую строку текста из входного потока. Он считывает последовательные байты, преобразуя каждый байт в символ, пока не встретит разделитель строк или конец файла; прочитанные символы затем возвращаются как String. Обратите внимание, что поскольку этот метод обрабатывает байты, он не поддерживает ввод полного набора символов Юникод.

Если встречается конец файла, прежде чем будет прочитан хотя бы один байт, то возвращается null. В противном случае каждый прочитанный байт преобразуется в тип char с помощью расширения нулями. Если встречается символ '\n', он отбрасывается, и чтение прекращается. Если встречается символ '\r', он отбрасывается, и если следующий байт преобразуется в символ '\n', то он также отбрасывается; чтение прекращается. Если конец файла встретится, прежде чем встретятся любой из символов '\n' и '\r', чтение прекращается. По завершении чтения возвращается String, который содержит все прочитанные и не отброшенные символы в порядке их чтения. Обратите внимание, что каждое значение символа в этой строке будет меньше \u0100, то есть (char)256.

Позиция бита в потоке сбрасывается до нуля перед чтением.

Установлено:
readLine в интерфейсе DataInput
Возвращает:
строка, содержащая строку текста из потока.
Выбрасывает:
IOException - если произошла ошибка ввода-вывода.

readUTF

String readUTF()
        throws IOException

Считывает строку, закодированную в формате модифицированной UTF-8. Общая задача readUTF заключается в том, чтобы прочитать представление строки символов Юникода, закодированной в формате модифицированной UTF-8; эта строка символов затем возвращается как String.

Сначала считываются два байта и используются для построения беззнакового 16-битного целого числа аналогично методу readUnsignedShort, используя сетевой порядок байтов (независимо от текущих настроек порядка байтов). Это целое значение называется длиной UTF и определяет количество дополнительных байтов для чтения. Эти байты преобразуются в символы, рассматривая их группами. Длина каждой группы вычисляется из значения первого байта группы. Байты, следующие за группой, если таковые имеются, являются первыми байтами следующей группы.

Если первый байт группы совпадает с битовым шаблоном 0xxxxxxx (где x означает «может быть 0 или 1»), то группа состоит только из этого байта. Байты нулевого расширения образуют символ.

Если первый байт группы совпадает с битовым шаблоном 110xxxxx, то группа состоит из этого байта a и второго байта b. Если нет байта b (потому что байт a был последним из считанных байтов), или если байт b не совпадает с битовым шаблоном 10xxxxxx, то выбрасывается UTFDataFormatException. В противном случае группа преобразуется в символ:

(char)(((a& 0x1F) << 6) | (b & 0x3F))
Если первый байт группы совпадает с битовым шаблоном 1110xxxx, то группа состоит из этого байта a и двух дополнительных байтов b и c. Если нет байта c (потому что байт a был одним из последних двух считанных байтов), или байт b или байт c не совпадают с битовым шаблоном 10xxxxxx, то выбрасывается UTFDataFormatException. В противном случае группа преобразуется в символ:
(char)(((a & 0x0F) << 12) | ((b & 0x3F) << 6) | (c & 0x3F))
Если первый байт группы соответствует шаблону 1111xxxx или шаблону 10xxxxxx, то выбрасывается UTFDataFormatException.

Если в процессе чтения в любой момент встречается конец файла, то выбрасывается java.io.EOFException.

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

Настройка текущего порядка байтов игнорируется.

Позиция бита в потоке сбрасывается до нуля перед чтением.

Примечание: Этот метод не следует использовать при реализации форматов изображений, использующих стандартный UTF-8, поскольку здесь используется модифицированный UTF-8, несовместимый со стандартным UTF-8.

Установлено:
readUTF в интерфейсе DataInput
Возвращает:
строка, считанная из потока.
Выбрасывает:
EOFException - если этот поток достигает конца до прочтения всех байтов.
UTFDataFormatException - если байты не представляют собой допустимого кодирования строки модифицированным UTF-8.
IOException - если произошла ошибка ввода-вывода.

readFully

void readFully(byte[] b,
               int off,
               int len)
        throws IOException

Считывает len байтов из потока и сохраняет их в b начиная с индекса off. Если достигнут конец потока, будет выброшено java.io.EOFException.

Позиция бита в потоке сбрасывается до нуля перед чтением.

Установлено:
readFully в интерфейсе DataInput
Параметры:
b - массив байтов, которые будут записаны.
off - начальная позиция в b для записи.
len - максимальное количество byte для чтения.
Выбрасывает:
IndexOutOfBoundsException - если off отрицательно, len отрицательно или off + len больше, чем b.length.
NullPointerException - если b равно null.
EOFException - если поток достигнет конца, прежде чем прочитать все байты.
IOException - если произошла ошибка ввода-вывода.

readFully

void readFully(byte[] b)
        throws IOException

Считывает b.length байтов из потока и сохраняет их в b начиная с индекса 0. Если достигнут конец потока, будет выброшено java.io.EOFException.

Позиция бита в потоке сбрасывается до нуля перед чтением.

Установлено:
readFully в интерфейсе DataInput
Параметры:
b - массив byte.
Выбрасывает:
NullPointerException - если b равно null.
EOFException - если поток достигнет конца, прежде чем прочитать все байты.
IOException - если произошла ошибка ввода-вывода.

readFully

void readFully(short[] s,
               int off,
               int len)
        throws IOException

Считывает len коротких целых чисел (знаковых 16-битных целых чисел) из потока в соответствии с текущим порядком байтов и сохраняет их в s начиная с индекса off. Если достигнут конец потока, будет выброшено java.io.EOFException.

Позиция бита в потоке сбрасывается до нуля перед чтением.

Параметры:
s - массив байтов, который будет записан.
off - начальная позиция в s для записи.
len - максимальное количество short для чтения.
Исключения:
IndexOutOfBoundsException - если off отрицательно, len отрицательно или off + len больше s.length.
NullPointerException - если s равно null.
EOFException - если поток достигает конца перед чтением всех байтов.
IOException - если произошла ошибка ввода-вывода.

readFully

void readFully(char[] c,
               int off,
               int len)
        throws IOException

Читает len символов (незнаковые 16-битные целые числа) из потока в соответствии с текущим порядком байтов и сохраняет их в c начиная с индекса off. Если достигнут конец потока, будет выброшено исключение java.io.EOFException.

Битовый сдвиг в потоке сбрасывается до нуля перед чтением.

Параметры:
c - массив символов, в который нужно записать данные.
off - начальная позиция в c для записи.
len - максимальное количество char для чтения.
Исключения:
IndexOutOfBoundsException - если off отрицательно, len отрицательно или off + len больше c.length.
NullPointerException - если c равно null.
EOFException - если поток достигает конца перед чтением всех байтов.
IOException - если произошла ошибка ввода-вывода.

readFully

void readFully(int[] i,
               int off,
               int len)
        throws IOException

Читает len целых чисел (знаковые 32-битные целые числа) из потока в соответствии с текущим порядком байтов и сохраняет их в i начиная с индекса off. Если достигнут конец потока, будет выброшено исключение java.io.EOFException.

Битовый сдвиг в потоке сбрасывается до нуля перед чтением.

Параметры:
i - массив целых чисел, в который нужно записать данные.
off - начальная позиция в i для записи.
len - максимальное количество int для чтения.
Исключения:
IndexOutOfBoundsException - если off отрицательно, len отрицательно или off + len больше i.length.
NullPointerException - если i равно null.
EOFException - если поток достигает конца перед чтением всех байтов.
IOException - если произошла ошибка ввода-вывода.

readFully

void readFully(long[] l,
               int off,
               int len)
        throws IOException

Читает len длинных целых чисел (знаковые 64-битные целые числа) из потока в соответствии с текущим порядком байтов и сохраняет их в l начиная с индекса off. Если достигнут конец потока, будет выброшено исключение java.io.EOFException.

Битовый сдвиг в потоке сбрасывается до нуля перед чтением.

Параметры:
l - массив длинных целых чисел, в который нужно записать данные.
off - начальная позиция в l для записи.
len - максимальное количество long для чтения.
Исключения:
IndexOutOfBoundsException - если off отрицательно, len отрицательно или off + len больше l.length.
NullPointerException - если l равно null.
EOFException - если поток достигает конца перед чтением всех байтов.
IOException - если произошла ошибка ввода-вывода.

readFully

void readFully(float[] f,
               int off,
               int len)
        throws IOException

Читает len чисел с плавающей точкой (32-битные числа с плавающей точкой одинарной точности IEEE) из потока в соответствии с текущим порядком байтов и сохраняет их в f начиная с индекса off. Если достигнут конец потока, будет выброшено исключение java.io.EOFException.

Битовый сдвиг в потоке сбрасывается до нуля перед чтением.

Параметры:
f - массив чисел с плавающей точкой, в который нужно записать данные.
off - начальная позиция в f для записи.
len - максимальное количество float для чтения.
Исключения:
IndexOutOfBoundsException - если off отрицательно, len отрицательно или off + len больше f.length.
NullPointerException - если f равно null.
EOFException - если поток достигает конца перед чтением всех байтов.
IOException - если произошла ошибка ввода-вывода.

readFully

void readFully(double[] d,
               int off,
               int len)
        throws IOException

Читает len чисел с двойной точностью (64-битные числа с плавающей точкой двойной точности IEEE) из потока в соответствии с текущим порядком байтов и сохраняет их в d начиная с индекса off. Если достигнут конец потока, будет выброшено исключение java.io.EOFException.

Битовый сдвиг в потоке сбрасывается до нуля перед чтением.

Параметры:
d - массив чисел с двойной точностью, в который нужно записать данные.
off - начальная позиция в d для записи.
len - максимальное количество double для чтения.
Исключения:
IndexOutOfBoundsException - если off отрицательно, len отрицательно или off + len больше d.length.
NullPointerException - если d равно null.
EOFException - если поток достигает конца перед чтением всех байтов.
IOException - если произошла ошибка ввода-вывода.

getStreamPosition

long getStreamPosition()
                throws IOException

Возвращает текущую байтовую позицию потока. Следующее чтение произойдёт с этого смещения.

Возвращает:
значение типа long, содержащее позицию потока.
Исключения:
IOException - если произошла ошибка ввода-вывода.

getBitOffset

int getBitOffset()
          throws IOException

Возвращает текущее битовое смещение, целое число от 0 до 7 включительно. Битовое смещение неявно обновляется вызовами метода readBits. Значение 0 соответствует старшему биту, а значение 7 – младшему биту читаемого байта.

Битовое смещение устанавливается в 0 при первом открытии потока и сбрасывается до 0 вызовами seek, skipBytes, или любых методов read или readFully.

Возвращает:
значение типа int, содержащее битовое смещение от 0 до 7 включительно.
Исключения:
IOException - если произошла ошибка ввода-вывода.
См. также:
setBitOffset(int)

setBitOffset

void setBitOffset(int bitOffset)
           throws IOException

Устанавливает битовое смещение на целое число от 0 до 7 включительно. Байтовое смещение в потоке, возвращаемое методом getStreamPosition, остаётся неизменным. Значение 0 соответствует старшему биту, а значение 7 – младшему биту читаемого байта.

Параметры:
bitOffset - желаемое смещение, целое число от 0 до 7 включительно.
Исключения:
IllegalArgumentException - если bitOffset не находится в диапазоне от 0 до 7 включительно.
IOException - если произошла ошибка ввода-вывода.
См. также:
getBitOffset()

readBit

int readBit()
     throws IOException

Читает один бит из потока и возвращает его как целое число со значением 0 или 1. Битовое смещение увеличивается на единицу и уменьшается по модулю 8.

Возвращает:
целое число, содержащее значение 0 или 1.
Исключения:
EOFException - если поток достигает конца перед чтением всех битов.
IOException - если произошла ошибка ввода-вывода.

readBits

long readBits(int numBits)
       throws IOException

Читает битовую строку из потока и возвращает её как целое число, причём первый прочитанный бит становится старшим битом результата. Чтение начинается внутри байта, указанного значением getStreamPosition, в позиции, заданной значением getBitOffset. Битовое смещение увеличивается на numBits и уменьшается по модулю 8.

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

long accum = 0L;
 for (int i = 0; i < numBits; i++) {
   accum <<= 1; // Shift left one bit to make room
   accum |= readBit();
 }
Обратите внимание, что результат readBits(32) может отличаться от результата readInt(), если используется обратный сетевой порядок байтов (т.е., getByteOrder() == false).

Если перед чтением всех битов встречается конец потока, будет выброшено исключение java.io.EOFException.

Параметры:
numBits - количество битов для чтения, целое число от 0 до 64 включительно.
Возвращает:
битовую строку в виде целого числа, где последний прочитанный бит хранится в младшем значащем бите.
Исключения:
IllegalArgumentException - если numBits не находится в диапазоне от 0 до 64 включительно.
EOFException - если поток достигает конца перед чтением всех битов.
IOException - если произошла ошибка ввода-вывода.

length

long length()
     throws IOException

Возвращает общую длину потока, если она известна. В противном случае возвращается -1.

Возвращает:
значение типа long, содержащее длину потока, если она известна, в противном случае -1.
Исключения:
IOException - если произошла ошибка ввода-вывода.

skipBytes

int skipBytes(int n)
       throws IOException

Перемещает позицию потока вперед на заданное количество байтов. Возможно, этот метод сможет переместиться вперед только на меньшее количество байтов, чем запрошено, например, если достигнут конец потока. Во всех случаях возвращается фактическое количество пропущенных байтов. Битовый сдвиг устанавливается в ноль перед перемещением позиции.

Указано в:
skipBytes в интерфейсе DataInput
Параметры:
n - значение типа int, содержащее количество байтов, которые необходимо пропустить.
Возвращает:
значение типа int, представляющее количество пропущенных байтов.
Выбрасывает:
IOException - если произошла ошибка ввода-вывода.

skipBytes

long skipBytes(long n)
        throws IOException

Перемещает позицию потока вперед на заданное количество байтов. Этот метод идентичен skipBytes(int) за исключением того, что он допускает больший размер пропуска.

Параметры:
n - значение типа long, содержащее количество байтов, которые необходимо пропустить.
Возвращает:
значение типа long, представляющее количество пропущенных байтов.
Выбрасывает:
IOException - если произошла ошибка ввода-вывода.

seek

void seek(long pos)
   throws IOException

Устанавливает текущую позицию потока в нужное местоположение. Следующее чтение произойдет в этом месте. Битовый сдвиг устанавливается в 0.

Будет брошено исключение IndexOutOfBoundsException, если pos меньше позиции сброса (возвращаемой методом getflushedPosition).

Разрешено перемещаться за конец файла; исключение java.io.EOFException будет брошено только при чтении.

Параметры:
pos - значение типа long, содержащее желаемую позицию указателя файла.
Выбрасывает:
IndexOutOfBoundsException - если pos меньше позиции сброса.
IOException - если произошла любая другая ошибка ввода-вывода.

mark

void mark()

Помечает позицию в потоке, чтобы вернуться к ней последующим вызовом reset. В отличие от стандартного InputStream, все ImageInputStream поддерживают пометку. Кроме того, вызовы mark и reset могут быть вложены произвольно.

В отличие от методов mark, объявленных интерфейсами Reader и InputStream, параметр readLimit не используется. После вызова mark может быть прочитано произвольное количество данных.

Позиция бита, используемая методом readBits, сохраняется и восстанавливается каждой парой вызовов mark и reset.

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

reset

void reset()
    throws IOException

Возвращает указатель потока в предыдущую позицию, включая битовый сдвиг, на момент последнего несоответствующего вызова mark.

Вызовы reset без соответствующего вызова mark не имеют эффекта.

Будет брошено исключение IOException, если предыдущая помеченная позиция находится в отброшенной части потока.

Выбрасывает:
IOException - если произошла ошибка ввода-вывода.

flushBefore

void flushBefore(long pos)
          throws IOException

Отбрасывает начальную часть потока перед указанной позицией. Попытка перейти к смещению в отброшенной части потока приведет к исключению IndexOutOfBoundsException.

Вызов flushBefore может позволить классам, реализующим этот интерфейс, освободить ресурсы, такие как память или дисковое пространство, используемые для хранения данных из потока.

Параметры:
pos - значение типа long, содержащее длину префикса потока, который можно сбросить.
Выбрасывает:
IndexOutOfBoundsException - если pos находится в сброшенной части потока или за текущей позицией потока.
IOException - если произошла ошибка ввода-вывода.

flush

void flush()
    throws IOException

Отбрасывает начальную позицию потока перед текущей позицией потока. Эквивалентно flushBefore(getStreamPosition()).

Выбрасывает:
IOException - если произошла ошибка ввода-вывода.

getFlushedPosition

long getFlushedPosition()

Возвращает наираньшую позицию в потоке, к которой можно выполнить переход. Возвращаемое значение будет максимальным из всех значений, переданных в предыдущие вызовы flushBefore.

Возвращает:
самую раннюю допустимую позицию для перехода в виде значения long.

isCached

boolean isCached()

Возвращает true, если этот ImageInputStream кеширует данные для возможности обратного перехода. Приложения могут использовать это для принятия решения о том, как часто или нужно ли выполнять сброс для сохранения ресурсов кеша.

Возвращает:
true если этот ImageInputStream кеширует данные.
См. также:
isCachedMemory(), isCachedFile()

isCachedMemory

boolean isCachedMemory()

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

Возвращает:
true если этот ImageInputStream кеширует данные в оперативной памяти.
См. также:
isCached(), isCachedFile()

isCachedFile

boolean isCachedFile()

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

Возвращает:
true если этот ImageInputStream кеширует данные во временном файле.
См. также:
isCached(), isCachedMemory()

close

void close()
    throws IOException

Закрывает поток. Попытка получить доступ к закрытому потоку может привести к исключениям IOException или к некорректному поведению. Вызов этого метода может позволить классам, реализующим этот интерфейс, освободить ресурсы, связанные с потоком, такие как память, дисковое пространство или дескрипторы файлов.

Указано в:
close в интерфейсе AutoCloseable
Указано в:
close в интерфейсе Closeable
Выбрасывает:
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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/imageio/stream/ImageInputStream.html

Spec-Zone .ru
спецификации, руководства, описания, API