Интерфейс ImageOutputStream
- Все суперинтерфейсы:
- AutoCloseable, Closeable, DataInput, DataOutput, ImageInputStream
- Все известные реализующие классы:
- FileCacheImageOutputStream, FileImageOutputStream, ImageOutputStreamImpl, MemoryCacheImageOutputStream
public interface ImageOutputStream extends ImageInputStream, DataOutput
Интерфейс потока вывода с возможностью поиска, используемый для ImageWriter. Различные пункты назначения вывода, такие как OutputStream и File, а также будущие пункты назначения с высокой скоростью ввода-вывода могут быть "обёрнуты" соответствующей реализацией этого интерфейса для использования в API для работы с изображениями.
В отличие от стандартного OutputStream, ImageOutputStream расширяет свой аналог, ImageInputStream. Таким образом, можно читать из потока во время его записи. Те же позиции поиска и сброса применимы как для чтения, так и для записи, хотя семантика работы с неравным нулю битовым смещением до байт-выровненной записи обязательно отличается от семантики работы с неравным нулю битовым смещением до байт-выровненного чтения. При чтении байтов любое битовое смещение устанавливается в 0 перед чтением; при записи байтов неравное нулю битовое смещение приводит к тому, что оставшиеся биты в байте записываются как 0. Затем байт-выровненная запись начинается с следующей позиции байта.
- См. также:
ImageInputStream
Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
flushBefore(long pos) Очищает все данные перед заданной позицией в целевом пункте назначения, таком как |
void |
write(byte[] b) Записывает последовательность байтов в поток в текущей позиции. |
void |
write(byte[] b,
int off,
int len) Записывает последовательность байтов в поток в текущей позиции. |
void |
write(int b) Записывает один байт в поток в текущей позиции. |
void |
writeBit(int bit) Записывает один бит, заданный младшим битом аргумента, в поток в текущем битовом смещении текущей позиции байта. |
void |
writeBits(long bits,
int numBits) Записывает последовательность битов, заданных |
void |
writeBoolean(boolean v) Записывает значение |
void |
writeByte(int v) Записывает 8 младших битов |
void |
writeBytes(String s) Записывает строку в поток вывода. |
void |
writeChar(int v) Этот метод является синонимом для |
void |
writeChars(char[] c,
int off,
int len) Записывает последовательность символов в поток в текущей позиции. |
void |
writeChars(String s) Записывает строку в поток вывода. |
void |
writeDouble(double v) Записывает значение |
void |
writeDoubles(double[] d,
int off,
int len) Записывает последовательность чисел с плавающей точкой двойной точности в поток в текущей позиции. |
void |
writeFloat(float v) Записывает значение |
void |
writeFloats(float[] f,
int off,
int len) Записывает последовательность чисел с плавающей точкой одинарной точности в поток в текущей позиции. |
void |
writeInt(int v) Записывает 32 бита |
void |
writeInts(int[] i,
int off,
int len) Записывает последовательность целых чисел в поток в текущей позиции. |
void |
writeLong(long v) Записывает 64 бита |
void |
writeLongs(long[] l,
int off,
int len) Записывает последовательность длинных целых чисел в поток в текущей позиции. |
void |
writeShort(int v) Записывает 16 младших битов |
void |
writeShorts(short[] s,
int off,
int len) Записывает последовательность коротких целых чисел в поток в текущей позиции. |
void |
writeUTF(String s) Записывает два байта информации о длине в поток вывода в сетевом порядке байтов, за которым следует представление модифицированной UTF-8 каждого символа в строке |
Методы, унаследованные от интерфейса javax.imageio.stream.ImageInputStream
close, flush, getBitOffset, getByteOrder, getFlushedPosition, getStreamPosition, isCached, isCachedFile, isCachedMemory, length, mark, read, read, read, readBit, readBits, readBoolean, readByte, readBytes, readChar, readDouble, readFloat, readFully, readFully, readFully, readFully, readFully, readFully, readFully, readFully, readInt, readLine, readLong, readShort, readUnsignedByte, readUnsignedInt, readUnsignedShort, readUTF, reset, seek, setBitOffset, setByteOrder, skipBytes, skipBytes Методы
write
void write(int b)
throws IOException Записывает один байт в поток в текущей позиции. 24 старших бита b игнорируются.
Если смещение бита в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Смещение бита будет равно 0 после записи. Реализаторы могут использовать метод flushBits класса ImageOutputStreamImpl для гарантии этого.
- Указано в:
-
writeв интерфейсеDataOutput - Параметры:
-
b- целое число, чьи младшие 8 битов подлежат записи. - Исключение:
-
IOException- если произошла ошибка ввода/вывода.
write
void write(byte[] b)
throws IOException Записывает последовательность байтов в поток в текущей позиции. Если b.length равно 0, ничего не записывается. Байты b[0] записывается первым, затем байт b[1], и так далее.
Если смещение бита в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Смещение бита будет равно 0 после записи.
- Указано в:
-
writeв интерфейсеDataOutput - Параметры:
-
b- массив байтов, которые нужно записать. - Исключение:
-
NullPointerException- еслиbравноnull. -
IOException- если произошла ошибка ввода/вывода.
write
void write(byte[] b,
int off,
int len)
throws IOException Записывает последовательность байтов в поток в текущей позиции. Если len равно 0, ничего не записывается. Байты b[off] записывается первым, затем байт b[off + 1], и так далее.
Если смещение бита в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Смещение бита будет равно 0 после записи. Реализаторы могут использовать метод flushBits класса ImageOutputStreamImpl для гарантии этого.
- Указано в:
-
writeв интерфейсеDataOutput - Параметры:
-
b- массив байтов, которые нужно записать. -
off- начальный смещение в данных. -
len- количество байтов для записи. - Исключение:
-
IndexOutOfBoundsException- еслиoffотрицательно,lenотрицательно илиoff + lenбольшеb.length. -
NullPointerException- еслиbравноnull. -
IOException- если произошла ошибка ввода/вывода.
writeBoolean
void writeBoolean(boolean v)
throws IOException Записывает значение типа boolean в поток. Если v равно true, записывается значение (byte)1; если v равно false, записывается значение (byte)0.
Если смещение бита в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Смещение бита будет равно 0 после записи.
- Указано в:
-
writeBooleanв интерфейсеDataOutput - Параметры:
-
v- значение типаbooleanдля записи. - Исключение:
-
IOException- если произошла ошибка ввода/вывода.
writeByte
void writeByte(int v)
throws IOException Записывает 8 младших битов v в поток. 24 старших бита v игнорируются. (Это означает, что writeByte делает ровно то же самое, что и write, для целочисленного аргумента.)
Если смещение бита в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Смещение бита будет равно 0 после записи.
- Указано в:
-
writeByteв интерфейсеDataOutput - Параметры:
-
v- целое число, содержащее значение байта для записи. - Исключение:
-
IOException- если произошла ошибка ввода/вывода.
writeShort
void writeShort(int v)
throws IOException Записывает 16 младших битов v в поток. 16 старших битов v игнорируются. Если поток использует сетевой порядок байтов, записываемые байты, в порядке, будут:
(byte)((v >> 8) & 0xff) (byte)(v & 0xff)В противном случае записываемые байты будут:
(byte)(v & 0xff) (byte)((v >> 8) & 0xff)
Если смещение бита в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Смещение бита будет равно 0 после записи.
- Указано в:
-
writeShortв интерфейсеDataOutput - Параметры:
-
v- целое число, содержащее значение короткого целого типа для записи. - Исключение:
-
IOException- если произошла ошибка ввода/вывода.
writeChar
void writeChar(int v)
throws IOException Этот метод является синонимом для writeShort.
- Указано в:
-
writeCharв интерфейсеDataOutput - Параметры:
-
v- целое число, содержащее значение char (unsigned short) для записи. - Исключение:
-
IOException- если произошла ошибка ввода/вывода. - См. также:
writeShort(int)
writeInt
void writeInt(int v)
throws IOException Записывает 32 бита v в поток. Если поток использует сетевой порядок байтов, записываемые байты, в порядке, будут:
(byte)((v >> 24) & 0xff) (byte)((v >> 16) & 0xff) (byte)((v >> 8) & 0xff) (byte)(v & 0xff)В противном случае записываемые байты будут:
(byte)(v & 0xff) (byte)((v >> 8) & 0xff) (byte)((v >> 16) & 0xff) (byte)((v >> 24) & 0xff)
Если смещение бита в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Смещение бита будет равно 0 после записи.
- Указано в:
-
writeIntв интерфейсеDataOutput - Параметры:
-
v- целое число, содержащее значение для записи. - Исключение:
-
IOException- если произошла ошибка ввода/вывода.
writeLong
void writeLong(long v)
throws IOException Записывает 64 бита v в поток. Если поток использует сетевой порядок байтов, записываемые байты, в порядке, будут:
(byte)((v >> 56) & 0xff) (byte)((v >> 48) & 0xff) (byte)((v >> 40) & 0xff) (byte)((v >> 32) & 0xff) (byte)((v >> 24) & 0xff) (byte)((v >> 16) & 0xff) (byte)((v >> 8) & 0xff) (byte)(v & 0xff)В противном случае записываемые байты будут:
(byte)(v & 0xff) (byte)((v >> 8) & 0xff) (byte)((v >> 16) & 0xff) (byte)((v >> 24) & 0xff) (byte)((v >> 32) & 0xff) (byte)((v >> 40) & 0xff) (byte)((v >> 48) & 0xff) (byte)((v >> 56) & 0xff)
Если смещение бита в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Смещение бита будет равно 0 после записи.
- Указано в:
-
writeLongв интерфейсеDataOutput - Параметры:
-
v- длинное целое число, содержащее значение для записи. - Исключение:
-
IOException- если произошла ошибка ввода/вывода.
writeFloat
void writeFloat(float v)
throws IOException Записывает значение типа float, состоящее из четырёх байтов, в выходной поток. Это делается так, как если бы сначала это значение типа float было преобразовано в целое число int точно так же, как метод Float.floatToIntBits, а затем значение типа int было записано точно так же, как метод writeInt.
Если смещение бита в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Смещение бита будет равно 0 после записи.
- Указано в:
-
writeFloatв интерфейсеDataOutput - Параметры:
-
v- число с плавающей точкой, содержащее значение для записи. - Исключение:
-
IOException- если произошла ошибка ввода/вывода.
writeDouble
void writeDouble(double v)
throws IOException Записывает значение типа double, состоящее из восьми байтов, в выходной поток. Это делается так, как если бы сначала это значение типа double было преобразовано в длинное целое число long точно так же, как метод Double.doubleToLongBits, а затем значение типа long было записано точно так же, как метод writeLong.
Если смещение бита в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Смещение бита будет равно 0 после записи.
- Указано в:
-
writeDoubleв интерфейсеDataOutput - Параметры:
-
v- число с двойной точностью, содержащее значение для записи. - Исключение:
-
IOException- если произошла ошибка ввода/вывода.
writeBytes
void writeBytes(String s)
throws IOException Записывает строку в выходной поток. Для каждого символа в строке s, взятых в порядке следования, один байт записывается в выходной поток. Если s равно null, выбрасывается исключение NullPointerException.
Если s.length равно нулю, то байты не записываются. В противном случае символ s[0] записывается первым, затем s[1], и так далее; последним записываемым символом является s[s.length-1]. Для каждого символа записывается один байт - младший байт - точно так же, как в методе writeByte . 8 старших битов каждого символа в строке игнорируются.
Если смещение бита в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Смещение бита будет равно 0 после записи.
- Указано в:
-
writeBytesв интерфейсеDataOutput - Параметры:
-
s- строка, содержащая значение для записи. - Исключение:
-
NullPointerException- еслиsравноnull. -
IOException- если произошла ошибка ввода/вывода.
writeChars
void writeChars(String s)
throws IOException Записывает строку в выходной поток. Для каждого символа в строке s, взятом в порядке следования, в выходной поток записываются два байта, упорядоченные в соответствии с текущим порядком байтов. Если используется сетевой порядок байтов, сначала записывается старший байт; порядок в противном случае меняется. Если s равно null, выбрасывается NullPointerException.
Если s.length равно нулю, то байты не записываются. В противном случае, сначала записывается символ s[0], затем s[1], и так далее; последний записанный символ — s[s.length-1].
Если битовый смещение в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Битовое смещение станет 0 после записи.
- Указано в:
-
writeCharsв интерфейсеDataOutput - Параметры:
-
s- aStringсодержащий значение для записи. - Выбрасывает:
-
NullPointerException- еслиsравноnull. -
IOException- если произошла ошибка ввода-вывода.
writeUTF
void writeUTF(String s)
throws IOException Записывает два байта информации о длине в выходной поток в сетевом порядке байтов, за которыми следует представление в формате изменённого UTF-8 каждого символа в строке s. Если s равно null, выбрасывается NullPointerException. Каждый символ в строке s преобразуется в группу из одного, двух или трёх байтов в зависимости от значения символа.
Если символ c находится в диапазоне \u0001 по \u007f, он представляется одним байтом:
(byte)c
Если символ c равен \u0000 или находится в диапазоне \u0080 по \u07ff, тогда он представляется двумя байтами, которые записываются в указанном порядке:
(byte)(0xc0 | (0x1f & (c >> 6))) (byte)(0x80 | (0x3f & c))
Если символ c находится в диапазоне \u0800 по uffff, то он представляется тремя байтами, которые записываются в указанном порядке:
(byte)(0xe0 | (0x0f & (c >> 12))) (byte)(0x80 | (0x3f & (c >> 6))) (byte)(0x80 | (0x3f & c))
Сначала вычисляется общее количество байтов, необходимых для представления всех символов в s. Если это число больше 65535, выбрасывается UTFDataFormatException. В противном случае эта длина записывается в выходной поток точно так же, как в методе writeShort; после этого записывается представление каждого символа в строке s в формате из одного, двух или трёх байтов.
Текущая настройка порядка байтов игнорируется.
Если битовое смещение в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Битовое смещение будет равно 0 после записи.
Примечание: Этот метод не следует использовать в реализации форматов изображений, которые используют стандартный UTF-8, так как используемый здесь изменённый UTF-8 несовместим со стандартным UTF-8.
- Указано в:
-
writeUTFв интерфейсеDataOutput - Параметры:
-
s- aStringсодержащий значение для записи. - Выбрасывает:
-
NullPointerException- еслиsравноnull. -
UTFDataFormatException- если изменённое UTF-8 представлениеsтребует более 65536 байтов. -
IOException- если произошла ошибка ввода-вывода.
writeShorts
void writeShorts(short[] s,
int off,
int len)
throws IOException Записывает последовательность short в поток по текущей позиции. Если len равно 0, ничего не записывается. Сначала записывается short s[off], затем short s[off + 1], и так далее. Порядок байтов в потоке используется для определения порядка записи отдельных байтов.
Если битовое смещение в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Битовое смещение станет 0 после записи.
- Параметры:
-
s- массивshortдля записи. -
off- начальное смещение в данных. -
len- количествоshortдля записи. - Выбрасывает:
-
IndexOutOfBoundsException- еслиoffотрицательно,lenотрицательно илиoff + lenбольшеs.length. -
NullPointerException- еслиsравноnull. -
IOException- если произошла ошибка ввода-вывода.
writeChars
void writeChars(char[] c,
int off,
int len)
throws IOException Записывает последовательность char в поток по текущей позиции. Если len равно 0, ничего не записывается. Сначала записывается char c[off], затем char c[off + 1], и так далее. Порядок байтов в потоке используется для определения порядка записи отдельных байтов.
Если битовое смещение в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Битовое смещение станет 0 после записи.
- Параметры:
-
c- массивcharдля записи. -
off- начальное смещение в данных. -
len- количествоcharдля записи. - Выбрасывает:
-
IndexOutOfBoundsException- еслиoffотрицательно,lenотрицательно илиoff + lenбольшеc.length. -
NullPointerException- еслиcравноnull. -
IOException- если произошла ошибка ввода-вывода.
writeInts
void writeInts(int[] i,
int off,
int len)
throws IOException Записывает последовательность int в поток по текущей позиции. Если len равно 0, ничего не записывается. Сначала записывается int i[off], затем int i[off + 1], и так далее. Порядок байтов в потоке используется для определения порядка записи отдельных байтов.
Если битовое смещение в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Битовое смещение станет 0 после записи.
- Параметры:
-
i- массивintдля записи. -
off- начальное смещение в данных. -
len- количествоintдля записи. - Выбрасывает:
-
IndexOutOfBoundsException- еслиoffотрицательно,lenотрицательно илиoff + lenбольшеi.length. -
NullPointerException- еслиiравноnull. -
IOException- если произошла ошибка ввода-вывода.
writeLongs
void writeLongs(long[] l,
int off,
int len)
throws IOException Записывает последовательность long в поток по текущей позиции. Если len равно 0, ничего не записывается. Сначала записывается long l[off], затем long l[off + 1], и так далее. Порядок байтов в потоке используется для определения порядка записи отдельных байтов.
Если битовое смещение в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Битовое смещение станет 0 после записи.
- Параметры:
-
l- массивlongдля записи. -
off- начальное смещение в данных. -
len- количествоlongдля записи. - Выбрасывает:
-
IndexOutOfBoundsException- еслиoffотрицательно,lenотрицательно илиoff + lenбольшеl.length. -
NullPointerException- еслиlравноnull. -
IOException- если произошла ошибка ввода-вывода.
writeFloats
void writeFloats(float[] f,
int off,
int len)
throws IOException Записывает последовательность float в поток по текущей позиции. Если len равно 0, ничего не записывается. Сначала записывается float f[off], затем float f[off + 1], и так далее. Порядок байтов в потоке используется для определения порядка записи отдельных байтов.
Если битовое смещение в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Битовое смещение станет 0 после записи.
- Параметры:
-
f- массивfloatдля записи. -
off- начальное смещение в данных. -
len- количествоfloatдля записи. - Выбрасывает:
-
IndexOutOfBoundsException- еслиoffотрицательно,lenотрицательно илиoff + lenбольшеf.length. -
NullPointerException- еслиfравноnull. -
IOException- если произошла ошибка ввода-вывода.
writeDoubles
void writeDoubles(double[] d,
int off,
int len)
throws IOException Записывает последовательность double в поток по текущей позиции. Если len равно 0, ничего не записывается. Сначала записывается double d[off], затем double d[off + 1], и так далее. Порядок байтов в потоке используется для определения порядка записи отдельных байтов.
Если битовое смещение в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Битовое смещение станет 0 после записи.
- Параметры:
-
d- массивdoublesдля записи. -
off- начальное смещение в данных. -
len- количествоdoubleдля записи. - Выбрасывает:
-
IndexOutOfBoundsException- еслиoffотрицательно,lenотрицательно илиoff + lenбольшеd.length. -
NullPointerException- еслиdравноnull. -
IOException- если произошла ошибка ввода-вывода.
writeBit
void writeBit(int bit)
throws IOException Записывает один бит, заданный младшим битом аргумента, в поток в текущей позиции битового смещения в текущей байтовой позиции. Верхние 31 бит аргумента игнорируются. Заданный бит заменяет предыдущий бит в этой позиции. Битовое смещение увеличивается на один и уменьшается по модулю 8.
Если какие-либо биты определенного байта никогда не были установлены в момент сброса байта в назначение, эти биты автоматически будут установлены в 0.
- Параметры:
-
bit-int, младший бит которого должен быть записан в поток. - Исключения:
-
IOException- если произошла ошибка ввода-вывода.
writeBits
void writeBits(long bits,
int numBits)
throws IOException Записывает последовательность битов, заданную numBits младшими битами аргумента слева направо в поток в текущей позиции битового смещения в текущей байтовой позиции. Верхние 64 -
numBits биты аргумента игнорируются. Битовое смещение увеличивается на numBits и уменьшается по модулю 8. Обратите внимание, что битовое смещение 0 всегда указывает на старший бит байта, и байты битов записываются последовательно по мере их появления. Таким образом, запись битов всегда выполняется в сетевом порядке байтов. Фактическая настройка порядка байтов потока игнорируется.
Данные битов могут накапливаться в памяти неопределенно долго, пока не будет вызван метод flushBefore. В этот момент все битовые данные перед сброшенной позицией будут записаны.
Если какие-либо биты определенного байта никогда не были установлены в момент сброса байта в назначение, эти биты автоматически будут установлены в 0.
- Параметры:
-
bits-long, содержащий биты, которые нужно записать, начиная с бита в позицииnumBits - 1и до младшего бита. -
numBits- значениеintот 0 до 64 включительно. - Исключения:
-
IllegalArgumentException- еслиnumBitsне находится в диапазоне от 0 до 64 включительно. -
IOException- если произошла ошибка ввода-вывода.
flushBefore
void flushBefore(long pos)
throws IOException Сбрасывает все данные перед заданной позицией в базовое назначение, например, OutputStream или File. Попытка перейти к сброшенной части потока приведет к ошибке IndexOutOfBoundsException.
- Определено в:
-
flushBeforeв интерфейсеImageInputStream - Параметры:
-
pos-long, содержащий длину префикса потока, который может быть сброшен в назначение. - Исключения:
-
IndexOutOfBoundsException- еслиposнаходится в сброшенной части потока или после текущей позиции потока. -
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.