Интерфейс 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- целое числоint, нижние 8 битов которого нужно записать. - Исключения:
-
IOException- если произошла ошибка ввода/вывода.
write
void write(byte[] b)
throws IOException Записывает последовательность байтов в поток в текущей позиции. Если длина b.length равна 0, ничего не записывается. Байты b[0] записываются сначала, затем байт b[1] и так далее.
Если смещение бита в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Смещение бита будет равно 0 после записи.
- Указано в:
-
writeв интерфейсеDataOutput - Параметры:
-
b- массив байтовbyteдля записи. - Исключения:
-
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- массив байтовbyteдля записи. -
off- начальное смещение в данных. -
len- количество байтовbyteдля записи. - Исключения:
-
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- целое числоintсодержащее значение байта для записи. - Исключения:
-
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- целое числоintсодержащее значение short для записи. - Исключения:
-
IOException- если произошла ошибка ввода/вывода.
writeChar
void writeChar(int v)
throws IOException Этот метод является синонимом для writeShort.
- Указано в:
-
writeCharв интерфейсеDataOutput - Параметры:
-
v- целое числоintсодержащее значение char (бесзнаковое короткое целое) для записи. - Исключения:
-
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- целое числоintсодержащее значение для записи. - Исключения:
-
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- целое число с плавающей точкойlongсодержащее значение для записи. - Исключения:
-
IOException- если произошла ошибка ввода/вывода.
writeFloat
void writeFloat(float v)
throws IOException Записывает значение типа float (состоящее из четырёх байтов) в выходной поток. Это делается так, как если бы оно сначала преобразовало это значение float в целое int точно так же, как метод Float.floatToIntBits, а затем записало значение int точно так же, как метод writeInt.
Если смещение бита в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Смещение бита будет равно 0 после записи.
- Указано в:
-
writeFloatв интерфейсеDataOutput - Параметры:
-
v- значение типаfloatсодержащее значение для записи. - Исключения:
-
IOException- если произошла ошибка ввода/вывода.
writeDouble
void writeDouble(double v)
throws IOException Записывает значение типа double (состоящее из восьми байтов) в выходной поток. Это делается так, как если бы оно сначала преобразовало это значение double в целое с плавающей точкой long точно так же, как метод Double.doubleToLongBits, а затем записало значение long точно так же, как метод writeLong.
Если смещение бита в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Смещение бита будет равно 0 после записи.
- Указано в:
-
writeDoubleв интерфейсеDataOutput - Параметры:
-
v- значение типаdoubleсодержащее значение для записи. - Исключения:
-
IOException- если произошла ошибка ввода/вывода.
writeBytes
void writeBytes(String s)
throws IOException Записывает строку в выходной поток. Для каждого символа в строке s, взятых в порядке следования, один байт записывается в выходной поток. Если s равно null, выбрасывается NullPointerException.
Если s.length равно нулю, байты не записываются. В противном случае символ s[0] записывается сначала, затем s[1] и так далее; последний записанный символ — s[s.length-1]. Для каждого символа записывается один байт, младший байт, точно так же, как метод writeByte. Восемь старших битов каждого символа в строке игнорируются.
Если смещение бита в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Смещение бита будет равно 0 после записи.
- Указано в:
-
writeBytesв интерфейсеDataOutput - Параметры:
-
s- строкаStringсодержащая значение для записи. - Исключения:
-
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-Stringсодержащий значение для записи. - Исключения:
-
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-Stringсодержащий значение для записи. - Исключения:
-
NullPointerException- еслиsравноnull. -
UTFDataFormatException- если представлениеsв модифицированной UTF-8 требует более 65536 байтов. -
IOException- если происходит ошибка ввода-вывода.
writeShorts
void writeShorts(short[] s,
int off,
int len)
throws IOException Записывает последовательность коротких целых чисел в поток в текущую позицию. Если len равно 0, ничего не записывается. Сначала записывается короткое целое число s[off], затем короткое целое число 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 Записывает последовательность символов в поток в текущую позицию. Если len равно 0, ничего не записывается. Сначала записывается символ c[off], затем символ 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 Записывает последовательность целых чисел в поток в текущую позицию. Если len равно 0, ничего не записывается. Сначала записывается целое число i[off], затем целое число 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 Записывает последовательность длинных целых чисел в поток в текущую позицию. Если len равно 0, ничего не записывается. Сначала записывается длинное целое число l[off], затем длинное целое число 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 Записывает последовательность чисел с плавающей точкой в поток в текущую позицию. Если len равно 0, ничего не записывается. Сначала записывается число с плавающей точкой f[off], затем число с плавающей точкой 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 Записывает последовательность чисел с плавающей точкой двойной точности в поток в текущую позицию. Если len равно 0, ничего не записывается. Сначала записывается число с плавающей точкой двойной точности d[off], затем число с плавающей точкой двойной точности 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/imageio/stream/ImageOutputStream.html