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, skipBytesvoid 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错误。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.