Интерфейс 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() | Возвращает порядок байтов, с которым значения данных будут считываться из этого потока, как экземпляр перечисления |
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() | Считывает строку, закодированную в формате изменённого 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 Считывает байт из потока и (по концепции) преобразует его в целое число, маскирует его 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