Spec-Zone.ru › OpenJDK 24

Интерфейс 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)
Очищает все данные до заданной позиции в целевом местоположении, таком как OutputStream или File.
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)
Записывает последовательность битов, заданную numBits младшими битами аргумента bits в порядке слева направо, в поток в текущем битовом смещении текущей позиции байта.
void writeBoolean(boolean v)
Записывает значение boolean в поток.
void writeByte(int v)
Записывает 8 младших битов v в поток.
void writeBytes(String s)
Записывает строку в поток вывода.
void writeChar(int v)
Этот метод является синонимом для writeShort.
void writeChars(char[] c, int off, int len)
Записывает последовательность символов в поток в текущей позиции.
void writeChars(String s)
Записывает строку в поток вывода.
void writeDouble(double v)
Записывает значение double, которое состоит из четырёх байтов, в поток вывода.
void writeDoubles(double[] d, int off, int len)
Записывает последовательность чисел с плавающей точкой двойной точности в поток в текущей позиции.
void writeFloat(float v)
Записывает значение float, которое состоит из четырёх байтов, в поток вывода.
void writeFloats(float[] f, int off, int len)
Записывает последовательность чисел с плавающей точкой одинарной точности в поток в текущей позиции.
void writeInt(int v)
Записывает 32 бита v в поток.
void writeInts(int[] i, int off, int len)
Записывает последовательность целых чисел в поток в текущей позиции.
void writeLong(long v)
Записывает 64 бита v в поток.
void writeLongs(long[] l, int off, int len)
Записывает последовательность длинных целых чисел в поток в текущей позиции.
void writeShort(int v)
Записывает 16 младших битов v в поток.
void writeShorts(short[] s, int off, int len)
Записывает последовательность коротких целых чисел в поток в текущей позиции.
void writeUTF(String s)
Записывает два байта информации о длине в поток в сетевом порядке байтов, за которым следует представление изменённого UTF-8 каждого символа в строке s.

Методы, объявленные в интерфейсе 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
Записывает значение булевого типа в поток. Если v равно true, записывается значение (byte)1; если v равно false, записывается значение (byte)0.

Если битовое смещение в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Битовое смещение будет равно 0 после записи.

Указано в:
writeBoolean в интерфейсе DataOutput
Параметры:
v - булевое значение для записи.
Исключения:
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 - целое число, содержащее значение символа (бесзнакового короткого целого) для записи.
Исключения:
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.floatToIntBits, а затем записано значение целого числа точно так же, как в методе writeInt.

Если битовое смещение в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Битовое смещение будет равно 0 после записи.

Указано в:
writeFloat в интерфейсе DataOutput
Параметры:
v - число с плавающей запятой, содержащее значение для записи.
Исключения:
IOException - если произошла ошибка ввода-вывода.

writeDouble

void writeDouble(double v) throws IOException
Записывает значение с двойной точностью, состоящее из восьми байтов, в выходной поток. Это делается так, как если бы сначала было выполнено преобразование этого значения с двойной точностью в длинное целое число точно так же, как в методе Double.doubleToLongBits, а затем записано значение длинного целого числа точно так же, как в методе writeLong.

Если битовое смещение в потоке не равно нулю, остаток текущего байта заполняется нулями и записывается сначала. Битовое смещение будет равно 0 после записи.

Указано в:
writeDouble в интерфейсе DataOutput
Параметры:
v - число с двойной точностью, содержащее значение для записи.
Исключения:
IOException - если произошла ошибка ввода-вывода.
END_OF_DOCUMENT_MARKER

writeBytes

void writeBytes(String s) throws IOException
Записывает строку в поток вывода. Для каждого символа в строке s, взятого в порядке следования, один байт записывается в поток вывода. Если s равно null, выбрасывается исключение NullPointerException.

Если s.length равно нулю, то байты не записываются. В противном случае, символ s[0] записывается сначала, затем s[1], и так далее; последним записывается символ s[s.length-1]. Для каждого символа записывается один байт, младший байт, точно так же, как и в методе writeByte. Старшие восемь бит каждого символа в строке игнорируются.

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

Specified by:
writeBytes в интерфейсе DataOutput
Parameters:
s - a String содержащая значение для записи.
Throws:
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 после записи.

Specified by:
writeChars в интерфейсе DataOutput
Parameters:
s - a String содержащая значение для записи.
Throws:
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 в формате из одного, двух или трех байтов.

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

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

Specified by:
writeUTF в интерфейсе DataOutput
Parameters:
s - a String содержащая значение для записи.
Throws:
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 после записи.

Parameters:
s - массив значений типа short для записи.
off - начальное смещение в данных.
len - количество значений short для записи.
Throws:
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 после записи.

Parameters:
c - массив значений типа char для записи.
off - начальное смещение в данных.
len - количество значений char для записи.
Throws:
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 после записи.

Parameters:
i - массив значений типа int для записи.
off - начальное смещение в данных.
len - количество значений int для записи.
Throws:
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 после записи.

Parameters:
l - массив значений типа long для записи.
off - начальное смещение в данных.
len - количество значений long для записи.
Throws:
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 - массив чисел с плавающей точкой, которые нужно записать.
off - начальный смещение в данных.
len - количество чисел с плавающей точкой для записи.
Исключения:
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 - массив чисел двойной точности для записи.
off - начальный смещение в данных.
len - количество чисел двойной точности для записи.
Исключения:
IndexOutOfBoundsException - если off отрицательно, len отрицательно или off + len больше, чем d.length.
NullPointerException - если d равно null.
IOException - если произошла ошибка ввода-вывода.

writeBit

void writeBit(int bit) throws IOException
Записывает один бит, определяемый младшим битом аргумента, в поток в текущем битовом смещении текущей позиции байта. Старшие 31 бит аргумента игнорируются. Заданный бит заменяет предыдущий бит в этой позиции. Битовый сдвиг увеличивается на единицу и уменьшается по модулю 8.

Если какие-либо биты конкретного байта никогда не были установлены во время сброса байта в место назначения, эти биты будут автоматически установлены в 0.

Параметры:
bit - целое число, младший бит которого должен быть записан в поток.
Исключения:
IOException - если произошла ошибка ввода-вывода.

writeBits

void writeBits(long bits, int numBits) throws IOException
Записывает последовательность битов, определяемых numBits младшими битами аргумента bits в порядке слева направо, в поток в текущем битовом смещении текущей позиции байта. Старшие 64 - numBits биты аргумента игнорируются. Битовый сдвиг увеличивается на numBits и уменьшается по модулю 8. Обратите внимание, что битовый сдвиг 0 всегда указывает на старший бит байта, и биты байтов записываются последовательно по мере их обнаружения. Таким образом, битовые записи всегда фактически в сетевом порядке байтов. Фактическая настройка порядка байтов потока игнорируется.

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

Если какие-либо биты конкретного байта никогда не были установлены во время сброса байта в место назначения, эти биты будут автоматически установлены в 0.

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

flushBefore

void flushBefore(long pos) throws IOException
Сбрасывает все данные перед заданной позицией в базовое место назначения, например, в поток или буфер. Попытка перейти к очищенной части потока приведет к ошибке IndexOutOfBoundsException.
Определено в:
flushBefore в интерфейсе ImageInputStream
Параметры:
pos - целое число, содержащее длину префикса потока, который можно сбросить в место назначения.
Исключения:
IndexOutOfBoundsException - если pos находится в очищенной части потока или за пределами текущей позиции потока.
IOException - если произошла ошибка ввода-вывода.

© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/imageio/stream/ImageOutputStream.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API