- 所有父级接口:
AutoCloseable
,Closeable
,DataInput
,DataOutput
,ImageInputStream
- 所有已知的实现类:
FileCacheImageOutputStream
,FileImageOutputStream
,ImageOutputStreamImpl
,MemoryCacheImageOutputStream
ImageWriter
s 使用的可搜索输出流接口。各种输出目标,例如 OutputStream
s 和 File
s,以及未来的快速 I/O 目标可能被这个接口的合适实现“包装”以供图像 I/O API 使用。
与标准 OutputStream
不同,ImageOutputStream 扩展了它的对应项 ImageInputStream
。因此,可以在写入时从流中读取。相同的查找和刷新位置适用于读取和写入,尽管在字节对齐写入之前处理非零位偏移的语义必然不同于在字节对齐之前处理非零位偏移的语义。对齐读取。读取字节时,任何位偏移量在读取前设置为0;写入字节时,非零位偏移会导致字节中的剩余位写入为 0。然后字节对齐的写入从下一个字节位置开始。
- 参见:
-
方法总结
修饰符和类型方法描述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
值写入输出流。void
writeFloats
(float[] f, int off, int len) 在当前位置将一系列浮点数写入流。void
writeInt
(int v) 将v
的 32 位写入流。void
writeInts
(int[] i, int off, int len) 在当前位置将一个 int 序列写入流。void
writeLong
(long v) 将v
的 64 位写入流。void
writeLongs
(long[] l, int off, int len) 在当前位置将一个 long 序列写入流。void
writeShort
(int v) 将v
的 16 个低位写入流。void
writeShorts
(short[] s, int off, int len) 在当前位置将一系列短裤写入流。void
以网络字节顺序将两个字节的长度信息写入输出流,后跟字符串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
在当前位置将单个字节写入流。b
的 24 位高位被忽略。如果流中的位偏移量不为零,则当前字节的剩余部分用 0 填充并首先写出。写入后位偏移将为 0。实现者可以使用
ImageOutputStreamImpl
的flushBits
方法来保证这一点。- 指定者:
write
在接口DataOutput
中- 参数:
b
- 一个int
,其低 8 位将被写入。- 抛出:
IOException
- 如果发生 I/O 错误。
-
write
在当前位置将字节序列写入流。如果b.length
为 0,则不写入任何内容。首先写入字节b[0]
,然后写入字节b[1]
,依此类推。如果流中的位偏移量不为零,则当前字节的剩余部分用 0 填充并首先写出。写入后位偏移将为 0。
- 指定者:
write
在接口DataOutput
中- 参数:
b
- 要写入的byte
数组。- 抛出:
NullPointerException
- 如果b
是null
。IOException
- 如果发生 I/O 错误。
-
write
在当前位置将字节序列写入流。如果len
为 0,则不写入任何内容。首先写入字节b[off]
,然后写入字节b[off + 1]
,依此类推。如果流中的位偏移量不为零,则当前字节的剩余部分用 0 填充并首先写出。写入后位偏移将为 0。实现者可以使用
ImageOutputStreamImpl
的flushBits
方法来保证这一点。- 指定者:
write
在接口DataOutput
中- 参数:
b
- 要写入的byte
数组。off
- 数据中的起始偏移量。len
- 要写入的byte
的数量。- 抛出:
IndexOutOfBoundsException
- 如果off
为负,len
为负,或off + len
大于b.length
。NullPointerException
- 如果b
是null
。IOException
- 如果发生 I/O 错误。
-
writeBoolean
将boolean
值写入流。如果v
为真,则写入值(byte)1
;如果v
为假,则写入值(byte)0
。如果流中的位偏移量不为零,则当前字节的剩余部分用 0 填充并首先写出。写入后位偏移将为 0。
- 指定者:
writeBoolean
在接口DataOutput
中- 参数:
v
- 要写入的boolean
。- 抛出:
IOException
- 如果发生 I/O 错误。
-
writeByte
将v
的 8 个低位写入流。v
的 24 位高位被忽略。 (这意味着writeByte
与write
对整数参数做完全相同的事情。)如果流中的位偏移量不为零,则当前字节的剩余部分用 0 填充并首先写出。写入后位偏移将为 0。
- 指定者:
writeByte
在接口DataOutput
中- 参数:
v
- 一个int
包含要写入的字节值。- 抛出:
IOException
- 如果发生 I/O 错误。
-
writeShort
将v
的 16 个低位写入流。v
的高 16 位被忽略。如果流使用网络字节顺序,写入的字节按顺序为:(byte)((v >> 8) & 0xff) (byte)(v & 0xff)
否则,写入的字节为:(byte)(v & 0xff) (byte)((v >> 8) & 0xff)
如果流中的位偏移量不为零,则当前字节的剩余部分用 0 填充并首先写出。写入后位偏移将为 0。
- 指定者:
writeShort
在接口DataOutput
中- 参数:
v
- 一个int
包含要写入的短值。- 抛出:
IOException
- 如果发生 I/O 错误。
-
writeChar
此方法是writeShort
的同义词。- 指定者:
writeChar
在接口DataOutput
中- 参数:
v
- 一个int
包含要写入的 char(unsigned short)值。- 抛出:
IOException
- 如果发生 I/O 错误。- 参见:
-
writeInt
将v
的 32 位写入流。如果流使用网络字节顺序,写入的字节按顺序为:(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。
- 指定者:
writeInt
在接口DataOutput
中- 参数:
v
- 包含要写入的值的int
。- 抛出:
IOException
- 如果发生 I/O 错误。
-
writeLong
将v
的 64 位写入流。如果流使用网络字节顺序,写入的字节按顺序为:(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。
- 指定者:
writeLong
在接口DataOutput
中- 参数:
v
- 包含要写入的值的long
。- 抛出:
IOException
- 如果发生 I/O 错误。
-
writeFloat
将由四个字节组成的float
值写入输出流。它这样做就好像它首先完全按照Float.floatToIntBits
方法的方式将此float
值转换为int
,然后完全按照writeInt
方法的方式写入 int 值。如果流中的位偏移量不为零,则当前字节的剩余部分用 0 填充并首先写出。写入后位偏移将为 0。
- 指定者:
writeFloat
在接口DataOutput
中- 参数:
v
- 包含要写入的值的float
。- 抛出:
IOException
- 如果发生 I/O 错误。
-
writeDouble
将由四个字节组成的double
值写入输出流。它这样做就好像它首先完全按照Double.doubleToLongBits
方法的方式将此double
值转换为long
,然后完全按照writeLong
方法的方式写入 long 值。如果流中的位偏移量不为零,则当前字节的剩余部分用 0 填充并首先写出。写入后位偏移将为 0。
- 指定者:
writeDouble
在接口DataOutput
中- 参数:
v
- 包含要写入的值的double
。- 抛出:
IOException
- 如果发生 I/O 错误。
-
writeBytes
将字符串写入输出流。对于字符串s
中的每个字符,按顺序将一个字节写入输出流。如果s
是null
,则抛出NullPointerException
。如果
s.length
为零,则不写入任何字节。否则先写入字符s[0]
,再写入s[1]
,以此类推;最后写入的字符是s[s.length-1]
。对于每个字符,写入一个字节,即低位字节,完全按照writeByte
方法的方式。忽略字符串中每个字符的高八位。如果流中的位偏移量不为零,则当前字节的剩余部分用 0 填充并首先写出。写入后位偏移将为 0。
- 指定者:
writeBytes
在接口DataOutput
中- 参数:
s
- 包含要写入的值的String
。- 抛出:
NullPointerException
- 如果s
是null
。IOException
- 如果发生 I/O 错误。
-
writeChars
将字符串写入输出流。对于字符串s
中的每个字符,按顺序将两个字节写入输出流,并根据当前字节顺序设置进行排序。如果使用网络字节序,高位字节先写;否则顺序相反。如果s
是null
,则抛出NullPointerException
。如果
s.length
为零,则不写入任何字节。否则先写入字符s[0]
,再写入s[1]
,以此类推;最后写入的字符是s[s.length-1]
。如果流中的位偏移量不为零,则当前字节的剩余部分用 0 填充并首先写出。写入后位偏移将为 0。
- 指定者:
writeChars
在接口DataOutput
中- 参数:
s
- 包含要写入的值的String
。- 抛出:
NullPointerException
- 如果s
是null
。IOException
- 如果发生 I/O 错误。
-
writeUTF
以网络字节顺序将两个字节的长度信息写入输出流,后跟字符串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 填充并首先写出。写入后位偏移将为 0。
Note:该方法不应该用于使用标准UTF-8的图像格式的实现,因为这里使用的修改后的UTF-8与标准UTF-8不兼容。
- 指定者:
writeUTF
在接口DataOutput
中- 参数:
s
- 包含要写入的值的String
。- 抛出:
NullPointerException
- 如果s
是null
。UTFDataFormatException
- 如果s
的修改后的 UTF-8 表示需要超过 65536 字节。IOException
- 如果发生 I/O 错误。
-
writeShorts
在当前位置将一系列短裤写入流。如果len
为 0,则不写入任何内容。首先写入短s[off]
,然后写入短s[off + 1]
,依此类推。流的字节顺序用于确定各个字节的写入顺序。如果流中的位偏移量不为零,则当前字节的剩余部分用 0 填充并首先写出。写入后位偏移将为 0。
- 参数:
s
- 要写入的short
数组。off
- 数据中的起始偏移量。len
- 要写入的short
的数量。- 抛出:
IndexOutOfBoundsException
- 如果off
为负,len
为负,或者off + len
大于s.length
。NullPointerException
- 如果s
是null
。IOException
- 如果发生 I/O 错误。
-
writeChars
在当前位置将一系列字符写入流。如果len
为 0,则不写入任何内容。首先写入 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
在当前位置将一个 int 序列写入流。如果len
为 0,则不写入任何内容。首先写入 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
在当前位置将一个 long 序列写入流。如果len
为 0,则不写入任何内容。 longl[off]
先写,然后是 longl[off + 1]
,依此类推。流的字节顺序用于确定各个字节的写入顺序。如果流中的位偏移量不为零,则当前字节的剩余部分用 0 填充并首先写出。写入后位偏移将为 0。
- 参数:
l
- 要写入的long
数组。off
- 数据中的起始偏移量。len
- 要写入的long
的数量。- 抛出:
IndexOutOfBoundsException
- 如果off
为负,len
为负,或off + len
大于l.length
。NullPointerException
- 如果l
是null
。IOException
- 如果发生 I/O 错误。
-
writeFloats
在当前位置将一系列浮点数写入流。如果len
为 0,则不写入任何内容。首先写入浮点数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
在当前位置将一系列双精度值写入流。如果len
为 0,则不写入任何内容。先写入双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
将由参数的最低有效位给出的单个位写入当前字节位置内当前位偏移处的流。忽略参数的高 31 位。给定的位替换该位置的前一位。位偏移量提前 1 并减少模 8。如果在将字节刷新到目标时从未设置特定字节的任何位,则这些位将自动设置为 0。
- 参数:
bit
- 一个int
,其最低有效位将被写入流。- 抛出:
IOException
- 如果发生 I/O 错误。
-
writeBits
将由bits
参数的numBits
最低有效位以从左到右的顺序给出的位序列写入当前字节位置内当前位偏移量的流中。忽略参数的高64 - numBits
位。位偏移量增加numBits
并减少模 8。请注意,位偏移量 0 始终表示字节的最高有效位,并且位的字节在遇到时按顺序写出。因此,位写入总是有效地按网络字节顺序进行。忽略实际的流字节顺序设置。位数据可能会无限期地累积在内存中,直到
flushBefore
被调用。届时,刷新位置之前的所有位数据将被写入。如果在将字节刷新到目标时从未设置特定字节的任何位,则这些位将自动设置为 0。
- 参数:
bits
- 一个long
包含要写入的位,从位置numBits - 1
的位开始一直到最低有效位。numBits
- 一个int
介于 0 和 64 之间,包括在内。- 抛出:
IllegalArgumentException
- 如果numBits
不在 0 到 64 之间,包括 0 和 64。IOException
- 如果发生 I/O 错误。
-
flushBefore
将给定位置之前的所有数据刷新到基础目标,例如OutputStream
或File
。尝试寻找流的刷新部分将导致IndexOutOfBoundsException
。- 指定者:
flushBefore
在接口ImageInputStream
中- 参数:
pos
- 一个long
包含可以刷新到目的地的流前缀的长度。- 抛出:
IndexOutOfBoundsException
- 如果pos
位于流的刷新部分或超过当前流位置。IOException
- 如果发生 I/O 错误。
-