-
- All Superinterfaces:
-
AutoCloseable
,Closeable
,DataInput
,DataOutput
,ImageInputStream
- 所有已知实现类:
-
FileCacheImageOutputStream
,FileImageOutputStream
,ImageOutputStreamImpl
,MemoryCacheImageOutputStream
public interface ImageOutputStream extends ImageInputStream, DataOutput
可ImageWriter
的输出流接口,供ImageWriter
使用。 各种输出目的地,例如OutputStream
和File
,以及未来的快速I / O目的地可以由该接口的合适实现“包装”以供Image I / O 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)
将由bits
参数的numBits
最低有效位以从左到右的顺序给出的位序列写入当前字节位置内当前位偏移的流。void
writeBoolean(boolean v)
将boolean
值写入流。void
writeByte(int v)
将v
的8个低位写入流。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
值写入输出流,该值由4个字节组成。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)
将一系列longs写入当前位置的流。void
writeShort(int v)
将v
的16个低位写入流。void
writeShorts(short[] s, int off, int len)
将一系列短路写入当前位置的流。void
writeUTF(String s)
以网络字节顺序将两个字节的长度信息写入输出流,然后是字符串s
中每个字符的 modified 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
将单个字节写入当前位置的流。b
的24个高位被忽略。如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。 实施者可以使用
flushBits
的方法ImageOutputStreamImpl
保证这一点。- Specified by:
-
write
接口DataOutput
- 参数
-
b
- 一个int
其低8位将被写入。 - 异常
-
IOException
- 如果发生I / O错误。
-
write
void write(byte[] b) throws IOException
将一个字节序列写入当前位置的流。 如果b.length
为0,b.length
写入任何内容。 首先写入字节b[0]
,然后写入字节b[1]
,依此类推。如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。
- Specified by:
-
write
在接口DataOutput
- 参数
-
b
- 要写入的数组byte
。 - 异常
-
NullPointerException
- 如果b
是null
。 -
IOException
- 如果发生I / O错误。
-
write
void write(byte[] b, int off, int len) throws IOException
将一个字节序列写入当前位置的流。 如果len
为0,len
写入任何内容。 首先写入字节b[off]
,然后写入字节b[off + 1]
,依此类推。如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。 实施者可以使用
flushBits
的方法ImageOutputStreamImpl
保证这一点。- Specified by:
-
write
在接口DataOutput
- 参数
-
b
- 要写入的数组byte
。 -
off
- 数据中的起始偏移量。 -
len
- 要写入的数量为byte
s。 - 异常
-
IndexOutOfBoundsException
- 如果off
为负数,len
为负数,或者off + len
为大于b.length
。 -
NullPointerException
- 如果b
是null
。 -
IOException
- 如果发生I / O错误。
-
writeBoolean
void writeBoolean(boolean v) throws IOException
将boolean
值写入流。 如果v
为true,则写入值(byte)1
; 如果v
为false,则写入值(byte)0
。如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。
- Specified by:
-
writeBoolean
在接口DataOutput
- 参数
-
v
- 要编写的boolean
。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeByte
void writeByte(int v) throws IOException
将v
的8个低位写入流。v
的24个高位被忽略。 (这意味着writeByte
不完全一样的东西作为write
为整数参数。)如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。
- Specified by:
-
writeByte
在接口DataOutput
- 参数
-
v
- 包含要写入的字节值的int
。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeShort
void writeShort(int v) throws IOException
将16个低位v
写入流。v
的16个高位被忽略。 如果流使用网络字节顺序,则按顺序写入的字节将为:(byte)((v >> 8) & 0xff) (byte)(v & 0xff)
否则,写入的字节将是:(byte)(v & 0xff) (byte)((v >> 8) & 0xff)
如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。
- Specified by:
-
writeShort
接口DataOutput
- 参数
-
v
- 包含要写入的短值的int
。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeChar
void writeChar(int v) throws IOException
此方法是writeShort
的同义词。- Specified by:
-
writeChar
在接口DataOutput
- 参数
-
v
- 包含要写入的char(unsigned short)值的int
。 - 异常
-
IOException
- 如果发生I / O错误。 - 另请参见:
-
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填充并首先写出。 写入后位偏移量为0。
- Specified by:
-
writeInt
接口DataOutput
- 参数
-
v
- 包含要写入的值的int
。 - 异常
-
IOException
- 如果发生I / O错误。
-
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填充并首先写出。 写入后位偏移量为0。
- Specified by:
-
writeLong
在界面DataOutput
- 参数
-
v
- 包含要写入的值的long
。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeFloat
void writeFloat(float v) throws IOException
将float
值(由4个字节组成)写入输出流。 它这样做是因为,如果它首先将这个float
值到int
在完全相同的方式Float.floatToIntBits
方法,然后在的完全相同的方式写入的int值writeInt
方法。如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。
- Specified by:
-
writeFloat
接口DataOutput
- 参数
-
v
- 包含要写入的值的float
。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeDouble
void writeDouble(double v) throws IOException
将double
值(由4个字节组成)写入输出流。 它这样做是因为,如果它首先将这个double
值到long
在完全相同的方式Double.doubleToLongBits
方法,然后在完全相同的方式写入长值writeLong
方法。如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。
- Specified by:
-
writeDouble
在接口DataOutput
- 参数
-
v
- 包含要写入的值的double
。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeBytes
void writeBytes(String s) throws IOException
将字符串写入输出流。 对于字符串s
中的每个字符(按顺序),将一个字节写入输出流。 如果s
是null
,则抛出NullPointerException
。如果
s.length
为零,则不写入任何字节。 否则,首先写入字符s[0]
,然后写入s[1]
,依此类推; 最后写的字符是s[s.length-1]
。 对于每个字符,写入一个字节,即低位字节,与writeByte
方法完全相同。 字符串中每个字符的高位8位被忽略。如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。
- Specified by:
-
writeBytes
在接口DataOutput
- 参数
-
s
- 包含要写入的值的String
。 - 异常
-
NullPointerException
- 如果s
是null
。 -
IOException
- 如果发生I / O错误。
-
writeChars
void writeChars(String s) throws IOException
将字符串写入输出流。 对于字符串s
中的每个字符,按顺序,将两个字节写入输出流,根据当前字节顺序设置进行排序。 如果使用网络字节顺序,则首先写入高位字节; 否则,订单会被撤销。 如果s
是null
,则抛出NullPointerException
。如果
s.length
为零,则不写入任何字节。 否则,首先写入字符s[0]
,然后写入s[1]
,依此类推; 最后写的字符是s[s.length-1]
。如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。
- Specified by:
-
writeChars
接口DataOutput
- 参数
-
s
- 包含要写入的值的String
。 - 异常
-
NullPointerException
- 如果s
是null
。 -
IOException
- 如果发生I / O错误。
-
writeUTF
void writeUTF(String s) throws IOException
以网络字节顺序将两个字节的长度信息写入输出流,然后是字符串s
中每个字符的modified 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
与writeShort
方法完全相同的方式将此长度写入输出流; 在此之后,写入字符串s
中每个字符的一个,两个或三个字节的表示。忽略当前字节顺序设置。
如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。
注意:此方法不应用于使用标准UTF-8的图像格式的实现,因为此处使用的修改后的UTF-8与标准UTF-8不兼容。
- Specified by:
-
writeUTF
在接口DataOutput
- 参数
-
s
- 包含要写入的值的String
。 - 异常
-
NullPointerException
- 如果s
是null
。 -
UTFDataFormatException
- 如果修改后的UTF-8表示形式s
需要超过65536个字节。 -
IOException
- 如果发生I / O错误。
-
writeShorts
void writeShorts(short[] s, int off, int len) throws IOException
将一系列短路写入当前位置的流。 如果len
为0,len
写入任何内容。 首先写短s[off]
,然后写短s[off + 1]
,依此类推。 流的字节顺序用于确定写入各个字节的顺序。如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。
- 参数
-
s
- 要写入的数组short
。 -
off
- 数据中的起始偏移量。 -
len
- 要写入的数量为short
s。 - 异常
-
IndexOutOfBoundsException
- 如果off
为负数,len
为负数,或者off + len
为大于s.length
。 -
NullPointerException
- 如果s
是null
。 -
IOException
- 如果发生I / O错误。
-
writeChars
void writeChars(char[] c, int off, int len) throws IOException
将一系列字符写入当前位置的流。 如果len
为0,len
写入任何内容。 首先写入charc[off]
,然后写入charc[off + 1]
,依此类推。 流的字节顺序用于确定写入各个字节的顺序。如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。
- 参数
-
c
- 要写入的数组char
。 -
off
- 数据中的起始偏移量。 -
len
- 要写入的数量为char
。 - 异常
-
IndexOutOfBoundsException
- 如果off
为负数,len
为负数,或者off + len
为大于c.length
。 -
NullPointerException
- 如果c
是null
。 -
IOException
- 如果发生I / O错误。
-
writeInts
void writeInts(int[] i, int off, int len) throws IOException
将一系列整数写入当前位置的流。 如果len
为0,len
写入任何内容。 首先写入inti[off]
,然后写入inti[off + 1]
,依此类推。 流的字节顺序用于确定写入各个字节的顺序。如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。
- 参数
-
i
- 要写入的数组int
。 -
off
- 数据中的起始偏移量。 -
len
- 要写入的数量为int
。 - 异常
-
IndexOutOfBoundsException
- 如果off
为负数,len
为负数,或者off + len
为大于i.length
。 -
NullPointerException
- 如果i
是null
。 -
IOException
- 如果发生I / O错误。
-
writeLongs
void writeLongs(long[] l, int off, int len) throws IOException
将一系列longs写入当前位置的流。 如果len
为0,len
写入任何内容。l[off]
是长l[off]
,然后是长l[off + 1]
,依此类推。 流的字节顺序用于确定写入各个字节的顺序。如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。
- 参数
-
l
- 要写入的数组long
。 -
off
- 数据中的起始偏移量。 -
len
- 要写入的数量为long
s。 - 异常
-
IndexOutOfBoundsException
- 如果off
为负数,len
为负数,或者off + len
为大于l.length
。 -
NullPointerException
- 如果l
是null
。 -
IOException
- 如果发生I / O错误。
-
writeFloats
void writeFloats(float[] f, int off, int len) throws IOException
将一系列浮点数写入当前位置的流。 如果len
为0,len
写入任何内容。 浮动f[off]
首先写入,然后浮动f[off + 1]
,依此类推。 流的字节顺序用于确定写入各个字节的顺序。如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。
- 参数
-
f
- 要写入的数组float
。 -
off
- 数据中的起始偏移量。 -
len
- 要写入的数量为float
。 - 异常
-
IndexOutOfBoundsException
- 如果off
为负数,len
为负数,或者off + len
为大于f.length
。 -
NullPointerException
- 如果f
是null
。 -
IOException
- 如果发生I / O错误。
-
writeDoubles
void writeDoubles(double[] d, int off, int len) throws IOException
将一系列双精度写入当前位置的流。 如果len
为0,len
写入任何内容。 首先写入双d[off]
,然后是双d[off + 1]
,依此类推。 流的字节顺序用于确定写入各个字节的顺序。如果流中的位偏移非零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移量为0。
- 参数
-
d
- 要写入的数组doubles
。 -
off
- 数据中的起始偏移量。 -
len
- 要写入的数量为double
。 - 异常
-
IndexOutOfBoundsException
- 如果off
为负数,len
为负数,或者off + len
为大于d.length
。 -
NullPointerException
- 如果d
是null
。 -
IOException
- 如果发生I / O错误。
-
writeBit
void writeBit(int bit) throws IOException
将由参数的最低有效位给出的单个位写入当前字节位置内当前位偏移的流。 参数的高31位被忽略。 给定位替换该位置的前一位。 位偏移增加1并减少模8。如果在将字节刷新到目标时从未设置过特定字节的任何位,则这些位将自动设置为0。
- 参数
-
bit
- 一个int
其最低有效位将写入流。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeBits
void writeBits(long bits, int numBits) throws IOException
将由bits
参数的numBits
最低有效位以从左到右的顺序给出的位序列写入当前字节位置内当前位偏移的流。 参数的上64 - numBits
位被忽略。 位偏移提前numBits
并减少模8。注意,0的位偏移始终表示字节的最高有效位,并且在遇到它们时按位顺序写出位字节。 因此,位写入总是以网络字节顺序有效。 忽略实际的流字节顺序设置。位数据可以无限期地累积在存储器中,直到
flushBefore
。 此时,将写入刷新位置之前的所有位数据。如果在将字节刷新到目标时从未设置过特定字节的任何位,则这些位将自动设置为0。
- 参数
-
bits
- 包含要写入的位的long
,从位long
的位开始,numBits - 1
最低位。 -
numBits
- 介于0和64之间的int
(含)。 - 异常
-
IllegalArgumentException
- 如果numBits
不在0到64之间(包括0和64)。 -
IOException
- 如果发生I / O错误。
-
flushBefore
void flushBefore(long pos) throws IOException
将给定位置之前的所有数据刷新到基础目标,例如OutputStream
或File
。 试图寻找流的刷新部分将导致IndexOutOfBoundsException
。- Specified by:
-
flushBefore
在接口ImageInputStream
- 参数
-
pos
- 包含可以刷新到目标的流前缀长度的long
。 - 异常
-
IndexOutOfBoundsException
- 如果pos
位于流的刷新部分或超过当前流位置。 -
IOException
- 如果发生I / O错误。
-
-