Spec-Zone.ru › OpenJDK 25

Интерфейс ImageOutputStream

Все суперинтерфейсы:
AutoCloseable, Closeable, DataInput, DataOutput, ImageInputStream
Все известные реализующие классы:
FileCacheImageOutputStream, FileImageOutputStream, ImageOutputStreamImpl, MemoryCacheImageOutputStream
public interface ImageOutputStream extends ImageInputStream, DataOutput
Интерфейс потока вывода с произвольным доступом, предназначенный для использования ImageWriters. Различные целевые объекты вывода, такие как OutputStreams и Files, а также будущие высокоскоростные устройства ввода-вывода могут быть «обёрнуты» подходящей реализацией этого интерфейса для использования API Image I/O.

В отличие от стандартного 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)
Записывает последовательность значений типа double в поток в текущей позиции.
void writeFloat(float v)
Записывает значение float, состоящее из четырёх байтов, в выходной поток.
void writeFloats(float[] f, int off, int len)
Записывает последовательность значений типа float в поток в текущей позиции.
void writeInt(int v)
Записывает 32 бита v в поток.
void writeInts(int[] i, int off, int len)
Записывает последовательность значений типа int в поток в текущей позиции.
void writeLong(long v)
Записывает 64 бита v в поток.
void writeLongs(long[] l, int off, int len)
Записывает последовательность значений типа long в поток в текущей позиции.
void writeShort(int v)
Записывает в поток 16 младших битов v.
void writeShorts(short[] s, int off, int len)
Записывает последовательность значений типа short в поток в текущей позиции.
void writeUTF(String s)
Записывает в выходной поток два байта с информацией о длине в сетевом порядке байтов, а затем представление модифицированного UTF-8 каждого символа строки s.

Методы, объявленные в интерфейсе 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 для аргумента типа integer.)

Если смещение бита в потоке не равно нулю, оставшаяся часть текущего байта заполняется нулями и сначала записывается. После записи смещение бита будет равно 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 (беззнаковое 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 — 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
Записывает в выходной поток два байта с информацией о длине в сетевом порядке байтов, а затем представление каждого символа строки s в кодировке модифицированный UTF-8. Если 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
Записывает последовательность значений 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 наименее значащими битами аргумента bits в порядке слева направо, по текущему смещению бита в текущей позиции байта. Старшие 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 — если произошла ошибка ввода-вывода.

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/imageio/stream/ImageOutputStream.html

Spec-Zone.ru

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