Интерфейс ImageInputStream
- Все суперинтерфейсы:
- AutoCloseable, Closeable, DataInput
- Все известные субинтерфейсы:
- ImageOutputStream
- Все известные реализующие классы:
- FileCacheImageInputStream, FileCacheImageOutputStream, FileImageInputStream, FileImageOutputStream, ImageInputStreamImpl, ImageOutputStreamImpl, MemoryCacheImageInputStream, MemoryCacheImageOutputStream
public interface ImageInputStream extends DataInput, Closeable
Интерфейс потока ввода с возможностью поиска, используемый ImageReaders. Различные источники ввода, такие как InputStreams и Files, а также будущие источники быстрого ввода/вывода могут быть "обёрнуты" подходящей реализацией этого интерфейса для использования API Image I/O.
- См. также:
-
ImageInputStreamImpl,FileImageInputStream,FileCacheImageInputStream,MemoryCacheImageInputStream
Краткое описание методов
| Модификатор и тип | Метод и описание |
|---|---|
void |
close() Закрывает поток. |
void |
flush() Отбрасывает начальную позицию потока до текущей позиции потока. |
void |
flushBefore(long pos) Отбрасывает начальную часть потока до указанной позиции. |
int |
getBitOffset() Возвращает текущий битовый смещение в виде целого числа от 0 до 7 включительно. |
ByteOrder |
getByteOrder() Возвращает порядок байтов, с которым значения данных будут считываться из этого потока, как экземпляр перечисления |
long |
getFlushedPosition() Возвращает самую раннюю позицию в потоке, к которой можно выполнить поиск. |
long |
getStreamPosition() Возвращает текущую позицию байта потока. |
boolean |
isCached() Возвращает |
boolean |
isCachedFile() Возвращает |
boolean |
isCachedMemory() Возвращает |
long |
length() Возвращает общую длину потока, если она известна. |
void |
mark() Помечает позицию в потоке, в которую нужно вернуться при последующем вызове |
int |
read() Считывает один байт из потока и возвращает его как целое число от 0 до 255. |
int |
read(byte[] b) Считывает до |
int |
read(byte[] b,
int off,
int len) Считывает до |
int |
readBit() Считывает один бит из потока и возвращает его как |
long |
readBits(int numBits) Считывает битовую строку из потока и возвращает её как |
boolean |
readBoolean() Считывает байт из потока и возвращает значение |
byte |
readByte() Считывает байт из потока и возвращает его как значение |
void |
readBytes(IIOByteBuffer buf,
int len) Считывает до |
char |
readChar() Эквивалентно |
double |
readDouble() Считывает 8 байтов из потока и (концептуально) объединяет их в соответствии с текущим порядком байтов и возвращает результат как |
float |
readFloat() Считывает 4 байта из потока и (концептуально) объединяет их в соответствии с текущим порядком байтов и возвращает результат как |
void |
readFully(byte[] b) Считывает |
void |
readFully(byte[] b,
int off,
int len) Считывает |
void |
readFully(char[] c,
int off,
int len) Считывает |
void |
readFully(double[] d,
int off,
int len) Считывает |
void |
readFully(float[] f,
int off,
int len) Считывает |
void |
readFully(int[] i,
int off,
int len) Считывает |
void |
readFully(long[] l,
int off,
int len) Считывает |
void |
readFully(short[] s,
int off,
int len) Считывает |
int |
readInt() Считывает 4 байта из потока и (концептуально) объединяет их в соответствии с текущим порядком байтов и возвращает результат как |
String |
readLine() Считывает следующую строку текста из входного потока. |
long |
readLong() Считывает 8 байтов из потока и (концептуально) объединяет их в соответствии с текущим порядком байтов и возвращает результат как |
short |
readShort() Считывает два байта из потока и (концептуально) объединяет их в соответствии с текущим порядком байтов и возвращает результат как значение |
int |
readUnsignedByte() Считывает байт из потока и (концептуально) преобразует его в целое число, маскирует его с помощью |
long |
readUnsignedInt() Считывает 4 байта из потока и (концептуально) объединяет их в соответствии с текущим порядком байтов, преобразует результат в длинное целое число, маскирует его с помощью |
int |
readUnsignedShort() Считывает два байта из потока и (концептуально) объединяет их в соответствии с текущим порядком байтов, преобразует результирующее значение в |
String |
readUTF() Считывает строку, закодированную в формате modified UTF-8. |
void |
reset() Возвращает указатель потока в его предыдущее положение, включая битовый смещение, во время последнего несвязанного вызова |
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 Считывает байт из потока и (концептуально) преобразует его в int, маскирует его с 0xff, чтобы удалить любые биты знакового расширения, и возвращает его как значение byte.
Таким образом, значения байтов между 0x00 и 0x7f просто возвращаются как целые значения между 0 и 127. Значения между 0x80 и 0xff, которые обычно представляют отрицательные byte значения, будут отображаться в положительные целые числа между 128 и 255.
Смещение бита в потоке сбрасывается в ноль перед чтением.
- Указано в:
-
readUnsignedByteв интерфейсеDataInput - Возвращает:
- беззнаковое значение байта из потока.
- Исключения:
-
EOFException- если достигнут конец потока. -
IOException- если возникает ошибка ввода-вывода.
readShort
short readShort()
throws IOException Считывает два байта из потока и (концептуально) объединяет их в соответствии с текущим порядком байтов и возвращает результат как значение short.
Смещение бита в потоке сбрасывается в ноль перед чтением.
- Указано в:
-
readShortв интерфейсеDataInput - Возвращает:
- знаковое значение short из потока.
- Исключения:
-
EOFException- если поток достигает конца до чтения всех байтов. -
IOException- если возникает ошибка ввода-вывода. - См. также:
getByteOrder()
readUnsignedShort
int readUnsignedShort()
throws IOException Считывает два байта из потока и (концептуально) объединяет их в соответствии с текущим порядком байтов, преобразует результирующее значение в int, маскирует его с 0xffff, чтобы удалить любые биты знакового расширения, и возвращает результат как беззнаковое значение int.
Смещение бита в потоке сбрасывается в ноль перед чтением.
- Указано в:
-
readUnsignedShortв интерфейсеDataInput - Возвращает:
- беззнаковое значение short из потока, как int.
- Исключения:
-
EOFException- если поток достигает конца до чтения всех байтов. -
IOException- если возникает ошибка ввода-вывода. - См. также:
getByteOrder()
readChar
char readChar()
throws IOException Эквивалентно readUnsignedShort, за исключением того, что результат возвращается с использованием типа данных char.
Смещение бита в потоке сбрасывается в ноль перед чтением.
- Указано в:
-
readCharв интерфейсеDataInput - Возвращает:
- беззнаковое значение char из потока.
- Исключения:
-
EOFException- если поток достигает конца до чтения всех байтов. -
IOException- если возникает ошибка ввода-вывода. - См. также:
readUnsignedShort()
readInt
int readInt()
throws IOException Считывает 4 байта из потока и (концептуально) объединяет их в соответствии с текущим порядком байтов и возвращает результат как int.
Смещение бита в потоке игнорируется и обрабатывается как если бы оно было равно нулю.
- Указано в:
-
readIntв интерфейсеDataInput - Возвращает:
- знаковое значение int из потока.
- Исключения:
-
EOFException- если поток достигает конца до чтения всех байтов. -
IOException- если возникает ошибка ввода-вывода. - См. также:
getByteOrder()
readUnsignedInt
long readUnsignedInt()
throws IOException Считывает 4 байта из потока и (концептуально) конкатенирует их в соответствии с текущим порядком байтов, преобразует результат в длинное целое, маскирует его с помощью 0xffffffffL для удаления любых битов знакового расширения и возвращает результат как беззнаковое значение long.
Смещение бита в потоке сбрасывается в ноль перед чтением.
- Возвращает:
- беззнаковое целое значение из потока в виде длинного целого.
- Исключения:
-
EOFException- если поток достигнет конца до считывания всех байтов. -
IOException- если произошла ошибка ввода-вывода. - См. также:
getByteOrder()
readLong
long readLong()
throws IOException Считывает 8 байтов из потока и (концептуально) конкатенирует их в соответствии с текущим порядком байтов и возвращает результат как long.
Смещение бита в потоке сбрасывается в ноль перед чтением.
- Указано в:
-
readLongв интерфейсеDataInput - Возвращает:
- знаковое длинное целое значение из потока.
- Исключения:
-
EOFException- если поток достигнет конца до считывания всех байтов. -
IOException- если произошла ошибка ввода-вывода. - См. также:
getByteOrder()
readFloat
float readFloat()
throws IOException Считывает 4 байта из потока и (концептуально) конкатенирует их в соответствии с текущим порядком байтов и возвращает результат как float.
Смещение бита в потоке сбрасывается в ноль перед чтением.
- Указано в:
-
readFloatв интерфейсеDataInput - Возвращает:
- значение с плавающей запятой из потока.
- Исключения:
-
EOFException- если поток достигнет конца до считывания всех байтов. -
IOException- если произошла ошибка ввода-вывода. - См. также:
getByteOrder()
readDouble
double readDouble()
throws IOException Считывает 8 байтов из потока и (концептуально) конкатенирует их в соответствии с текущим порядком байтов и возвращает результат как double.
Смещение бита в потоке сбрасывается в ноль перед чтением.
- Указано в:
-
readDoubleв интерфейсеDataInput - Возвращает:
- значение с плавающей запятой двойной точности из потока.
- Исключения:
-
EOFException- если поток достигнет конца до считывания всех байтов. -
IOException- если произошла ошибка ввода-вывода. - См. также:
getByteOrder()
readLine
String readLine()
throws IOException Считывает следующую строку текста из входного потока. Он считывает последовательные байты, преобразуя каждый байт по отдельности в символ, пока не встретит разделитель строки или конец файла; затем считанные символы возвращаются как String. Обратите внимание, что поскольку этот метод обрабатывает байты, он не поддерживает ввод полного набора символов Unicode.
Если встречен конец файла до того, как можно будет прочитать хотя бы один байт, возвращается null. В противном случае каждый прочитанный байт преобразуется в тип char с помощью расширения нулями. Если встречается символ '\n', он отбрасывается, и чтение прекращается. Если встречается символ '\r', он отбрасывается, и если следующий байт преобразуется в символ '\n', то он также отбрасывается; затем чтение прекращается. Если конец файла встречается до того, как будет встречен любой из символов '\n' и '\r', чтение прекращается. После прекращения чтения возвращается String, содержащий все прочитанные и не отброшенные символы, взятые по порядку. Обратите внимание, что каждый символ в этой строке будет иметь значение меньше \u0100, то есть (char)256.
Смещение бита в потоке сбрасывается в ноль перед чтением.
- Указано в:
-
readLineв интерфейсеDataInput - Возвращает:
- строку, содержащую строку текста из потока.
- Исключения:
-
IOException- если произошла ошибка ввода-вывода.
readUTF
String readUTF()
throws IOException Считывает строку, закодированную с использованием формата modified UTF-8. Общий контракт readUTF заключается в том, что он считывает представление строки символов Unicode, закодированной в формате modified 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 Возвращает текущую позицию байта потока. Следующее чтение будет выполнено начиная с этого смещения.
- Возвращает:
- длинное целое число, содержащее позицию потока.
- Исключения:
-
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- желаемое смещение какintот 0 до 7 включительно. - Исключения:
-
IllegalArgumentException- еслиbitOffsetне находится в диапазоне от 0 до 7 включительно. -
IOException- если произошла ошибка ввода-вывода. - См. также:
getBitOffset()
readBit
int readBit()
throws IOException Читает один бит из потока и возвращает его как int со значением 0 или 1. Смещение бита увеличивается на единицу и уменьшается по модулю 8.
- Возвращает:
int, содержащее значение0или1.- Исключения:
-
EOFException- если поток достигнет конца до чтения всех битов. -
IOException- если произошла ошибка ввода-вывода.
readBits
long readBits(int numBits)
throws IOException Читает битовую строку из потока и возвращает её как long, при этом первый прочитанный бит становится старшим битом результата. Чтение начинается в байте, указанном 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- количество битов для чтения какintот 0 до 64 включительно. - Возвращает:
- битовую строку как
longс последним прочитанным битом, хранящимся в младшем бите. - Исключения:
-
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.