public interface ImageOutputStream extends ImageInputStream, DataOutput
ImageWriter
秒。
诸如OutputStream
和File
之类的各种输出目的地以及将来的快速I / O目的地可以被该接口的适当实现“包裹”,以供Image I / O API使用。
与标准OutputStream
不同,ImageOutputStream扩展了其对应的ImageInputStream
。 因此,可以从流中读取它被写入。 尽管用于处理字节对齐写入之前的非零位偏移的语义必须与用于在字节对齐之前处理非零位偏移的语义不同,对齐阅读 当读取字节时,任何位偏移量在读取之前设置为0; 当写入字节时,非零位偏移使得该字节中的剩余位被写为0。 字节对齐的写入开始于下一个字节位置。
ImageInputStream
Modifier and Type | Method and Description |
---|---|
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 参数中
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)
在当前位置写入流的序列。
|
void |
writeLong(long v)
将64位的
v 写入流。
|
void |
writeLongs(long[] l, int off, int len)
在当前位置写入流的序列。
|
void |
writeShort(int v)
将
v 的16位低位写入流。
|
void |
writeShorts(short[] s, int off, int len)
在当前位置写入流的序列。
|
void |
writeUTF(String s)
将两个字节写入的长度信息,以网络字节顺序输出流,接着是
modified UTF-8每个字符的字符串中表示
s 。
|
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
void write(int b) throws IOException
b
的24个高位被忽略。
如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。 实施者可以使用flushBits
的方法ImageOutputStreamImpl
保证这一点。
write
在界面
DataOutput
b
- 要写入低8位的
int
。
IOException
- 如果发生I / O错误。
void write(byte[] b) throws IOException
b.length
为0,则不写任何内容。
首先写入字节b[0]
,再写入字节b[1]
,等等。
如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
write
在界面
DataOutput
b
-的阵列
byte
s到被写入。
NullPointerException
- 如果
b
是
null
。
IOException
- 如果发生I / O错误。
void write(byte[] b, int off, int len) throws IOException
len
为0,则不写任何内容。
首先写入字节b[off]
,然后是字节b[off + 1]
,等等。
如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。 实施者可以使用flushBits
的方法ImageOutputStreamImpl
保证这一点。
write
在界面
DataOutput
b
-的阵列
byte
s到被写入。
off
- 数据中的起始偏移量。
len
-数量
byte
s到写。
IndexOutOfBoundsException
- 如果
off
为负数,
len
为负数,或
off + len
为
b.length
。
NullPointerException
- 如果
b
是
null
。
IOException
- 如果发生I / O错误。
void writeBoolean(boolean v) throws IOException
boolean
值。
如果v
为真,则写入值(byte)1
;
如果v
为false,则写入值(byte)0
。
如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
writeBoolean
在界面
DataOutput
v
-
boolean
。
IOException
- 如果发生I / O错误。
void writeByte(int v) throws IOException
v
的8位低位写入流。
v
的24个高位被忽略。
(这意味着writeByte
与整数参数的write
完全一样) write
)
如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
writeByte
在界面
DataOutput
v
- 包含要写入的字节值的
int
。
IOException
- 如果发生I / O错误。
void writeShort(int v) throws IOException
v
的16位低位写入流。
v
的16位v
被忽略。
如果流使用网络字节顺序,则按顺序写入的字节为:
(byte)((v >> 8) & 0xff)
(byte)(v & 0xff)
否则写入的字节将为:
(byte)(v & 0xff)
(byte)((v >> 8) & 0xff)
如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
writeShort
在界面
DataOutput
v
- 一个
int
要写的短值。
IOException
- 如果发生I / O错误。
void writeChar(int v) throws IOException
writeShort
的同义词。
writeChar
在界面
DataOutput
v
- 一个
int
写入的char(unsigned short)值的
int
。
IOException
- 如果发生I / O错误。
writeShort(int)
void writeInt(int v) throws IOException
v
的32位写入流。
如果流使用网络字节顺序,则按顺序写入的字节为:
(byte)((v >> 24) & 0xff)
(byte)((v >> 16) & 0xff)
(byte)((v >> 8) & 0xff)
(byte)(v & 0xff)
Otheriwse,写入的字节将是:
(byte)(v & 0xff)
(byte)((v >> 8) & 0xff)
(byte)((v >> 16) & 0xff)
(byte)((v >> 24) & 0xff)
如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
writeInt
在界面
DataOutput
v
- 一个
int
要写入的值的
int
。
IOException
- 如果发生I / O错误。
void writeLong(long v) throws IOException
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错误。
void writeFloat(float v) throws IOException
float
值写入输出流。
这样做就好像它首先将float
值转换为int
,就是以Float.floatToIntBits
方法的方式,然后以完全符合writeInt
方法的方式写入int值。
如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
writeFloat
在界面
DataOutput
v
- 一个
float
要写入的值的
float
。
IOException
- 如果发生I / O错误。
void writeDouble(double v) throws IOException
double
值。
它这样做是因为,如果它首先将这个double
值到long
在完全相同的方式Double.doubleToLongBits
方法,然后在完全相同的方式写入长值writeLong
方法。
如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
writeDouble
在界面
DataOutput
v
- 一个
double
要写入的值的
double
。
IOException
- 如果发生I / O错误。
void writeBytes(String s) throws IOException
s
,为了拍摄,一个字节写入到输出流。
如果s
是null
,则抛出NullPointerException
。
如果s.length
为零,则不会写入任何字节。 否则,首先写入字符s[0]
,然后写入s[1]
,等等; 写最后一个字符是s[s.length-1]
。 对于每个字符,写入一个字节,低字节,按照writeByte
方法的方式。 字符串中每个字符的高8位被忽略。
如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
writeBytes
在界面
DataOutput
s
- 一个
String
要写入的值的
String
。
NullPointerException
- 如果
s
是
null
。
IOException
- 如果发生I / O错误。
void writeChars(String s) throws IOException
s
,为了服用,两个字节被根据当前字节顺序设定写入到输出流中,排序。
如果正在使用网络字节顺序,则首先写入高字节;
否则订单相反。
如果s
是null
,则抛出一个NullPointerException
。
如果s.length
为零,则不会写入字节。 否则,首先写入字符s[0]
,然后写入s[1]
,等等; 写最后一个字符是s[s.length-1]
。
如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
writeChars
在界面
DataOutput
s
- 一个
String
要写入的值的
String
。
NullPointerException
- 如果
s
是
null
。
IOException
- 如果发生I / O错误。
void writeUTF(String s) throws IOException
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填充并首先写出。 写入后位偏移将为0。
注意:此方法不应用于执行使用标准UTF-8的图像格式,因为此处使用的修改后的UTF-8与标准UTF-8不兼容。
writeUTF
在界面
DataOutput
s
- 一个
String
要写入的值的
String
。
NullPointerException
- 如果
s
是
null
。
UTFDataFormatException
- 如果
UTFDataFormatException
的修改的UTF-8
s
需要超过65536个字节。
IOException
- 如果发生I / O错误。
void writeShorts(short[] s, int off, int len) throws IOException
len
为0,则不写任何内容。
短s[off]
先写,然后短s[off + 1]
,等等。
流的字节顺序用于确定写入单个字节的顺序。
如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
s
-的阵列
short
s到被写入。
off
- 数据中的起始偏移量。
len
-数量
short
s到写。
IndexOutOfBoundsException
- 如果
off
为负,则
len
为负数,或
off + len
大于
s.length
。
NullPointerException
- 如果
s
是
null
。
IOException
- 如果发生I / O错误。
void writeChars(char[] c, int off, int len) throws IOException
len
为0,则不写任何内容。
炭c[off]
是先写,然后炭c[off + 1]
,等等。
流的字节顺序用于确定写入单个字节的顺序。
如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
c
-的阵列
char
s到被写入。
off
- 数据中的起始偏移量。
len
-数量
char
s到写。
IndexOutOfBoundsException
- 如果
off
为负数,则
len
为负数,或
off + len
大于
c.length
。
NullPointerException
- 如果
c
是
null
。
IOException
- 如果发生I / O错误。
void writeInts(int[] i, int off, int len) throws IOException
len
为0,则不会写入。
int i[off]
是先写的,然后是int i[off + 1]
,等等。
流的字节顺序用于确定写入单个字节的顺序。
如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
i
-的阵列
int
s到被写入。
off
- 数据中的起始偏移量。
len
-数量
int
s到写。
IndexOutOfBoundsException
- 如果
off
为负,
len
,否则为
off + len
,大于
i.length
。
NullPointerException
- 如果
i
是
null
。
IOException
- 如果发生I / O错误。
void writeLongs(long[] l, int off, int len) throws IOException
len
为0,则不写任何内容。
长l[off]
先写,然后长l[off + 1]
,等等。
流的字节顺序用于确定写入单个字节的顺序。
如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
l
-的阵列
long
s到被写入。
off
- 数据中的起始偏移量。
len
-数量
long
s到写。
IndexOutOfBoundsException
- 如果
off
为负数,
len
,否则为
off + len
,否则为
l.length
。
NullPointerException
- 如果
l
是
null
。
IOException
- 如果发生I / O错误。
void writeFloats(float[] f, int off, int len) throws IOException
len
为0,则不写任何内容。
浮动f[off]
先写,然后浮动f[off + 1]
等等。
流的字节顺序用于确定写入单个字节的顺序。
如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
f
-的阵列
float
s到被写入。
off
- 数据中的起始偏移量。
len
-数量
float
s到写。
IndexOutOfBoundsException
- 如果
off
为负数,
len
,否则为
off + len
,否则为
f.length
。
NullPointerException
- 如果
f
是
null
。
IOException
- 如果发生I / O错误。
void writeDoubles(double[] d, int off, int len) throws IOException
len
为0,则不写任何内容。
双d[off]
是先写的,然后是双d[off + 1]
,等等。
流的字节顺序用于确定写入单个字节的顺序。
如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
d
- 要编写的
doubles
的数组。
off
- 数据中的起始偏移量。
len
-数量
double
s到写。
IndexOutOfBoundsException
- 如果
off
为负数,则
len
为负数,或
off + len
大于
d.length
。
NullPointerException
- 如果
d
是
null
。
IOException
- 如果发生I / O错误。
void writeBit(int bit) throws IOException
如果特定字节的任何位在字节被刷新到目的地时从未被设置,则这些位将自动设置为0。
bit
- 一个
int
,其最低有效位要写入流。
IOException
- 如果发生I / O错误。
void writeBits(long bits, int numBits) throws IOException
bits
参数的numBits
最低有效位( bits
的顺序)给出的位序列写入当前字节位置当前位偏移量的流。
上限64 - numBits
的参数被忽略。
位偏移前进numBits
并减小模8。注意,0的位偏移总是表示字节的最高有效位,并且在遇到位时,字节的字节顺序写出。
因此,位写入总是以网络字节顺序有效。
实际流字节顺序设置被忽略。
位数据可以无限期累积到存储器中,直到flushBefore
。 那时候,闪存位置之前的所有位数据将被写入。
如果特定字节的任何位在字节被刷新到目的地时从未被设置,则这些位将自动设置为0。
bits
- 一个
long
要写入的位的
numBits - 1
,从位置
numBits - 1
的位开始到最低有效位。
numBits
-一个
int
0和64之间,包括端值。
IllegalArgumentException
- 如果
numBits
不在0和64之间(含)。
IOException
- 如果发生I / O错误
void flushBefore(long pos) throws IOException
OutputStream
或File
。
尝试寻找流的冲洗部分将导致IndexOutOfBoundsException
。
flushBefore
在界面
ImageInputStream
pos
- 一个
long
其中包含可能刷新到目的地的流前缀的长度。
IndexOutOfBoundsException
- 如果
pos
位于流的冲洗部分或超过当前流位置。
IOException
- 如果发生I / O错误。