- java.lang.Object
-
- javax.imageio.stream.ImageInputStreamImpl
-
- javax.imageio.stream.ImageOutputStreamImpl
-
- All Implemented Interfaces:
-
Closeable
,DataInput
,DataOutput
,AutoCloseable
,ImageInputStream
,ImageOutputStream
public abstract class ImageOutputStreamImpl extends ImageInputStreamImpl implements ImageOutputStream
一个实现ImageOutputStream
接口的抽象类。 该类旨在减少子类必须实现的方法的数量。
-
-
Field Summary
-
Fields inherited from class javax.imageio.stream.ImageInputStreamImpl
bitOffset, byteOrder, flushedPos, streamPos
-
-
构造方法摘要
构造方法 Constructor 描述 ImageOutputStreamImpl()
构造一个ImageOutputStreamImpl
。
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 protected void
flushBits()
如果位偏移量不为零,则强制当前字节中的剩余位为0,并将流位置提前一位。void
write(byte[] b)
在当前位置写入一串字节。abstract void
write(byte[] b, int off, int len)
在当前位置写入一串字节。abstract 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)
在当前位置写入流的序列。void
writeLong(long v)
将v
的64位写入流。void
writeLongs(long[] l, int off, int len)
在当前位置写入流的序列。void
writeShort(int v)
将v
位v
位低位位写入流。void
writeShorts(short[] s, int off, int len)
在当前位置写入流的序列。void
writeUTF(String s)
以网络字节顺序将两个字节的长度信息写入输出流,后跟字符串s
中每个字符的 modified UTF-8表示。-
Methods inherited from interface 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
-
Methods inherited from class javax.imageio.stream.ImageInputStreamImpl
checkClosed, close, finalize, flush, flushBefore, 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
-
Methods inherited from interface javax.imageio.stream.ImageOutputStream
flushBefore
-
-
-
-
方法详细信息
-
write
public abstract void write(int b) throws IOException
描述从接口ImageOutputStream
复制将当前位置的单个字节写入流。 忽略了b
的24个高位。如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。 实施者可以使用
flushBits
的方法ImageOutputStreamImpl
来保证这一点。- Specified by:
-
write
在接口DataOutput
- Specified by:
-
write
在接口ImageOutputStream
- 参数
-
b
- 要写入低8位的int
。 - 异常
-
IOException
- 如果发生I / O错误。
-
write
public void write(byte[] b) throws IOException
描述从接口ImageOutputStream
复制在当前位置写入一串字节。 如果b.length
为0,b.length
写任何内容。 字节b[0]
首先写入,然后字节b[1]
等等。如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
- Specified by:
-
write
在接口DataOutput
- Specified by:
-
write
在接口ImageOutputStream
- 参数
-
b
- 要写入的byte
数组。 - 异常
-
IOException
- 如果发生I / O错误。
-
write
public abstract void write(byte[] b, int off, int len) throws IOException
说明从界面ImageOutputStream
复制在当前位置写入一串字节。 如果len
为0,则不会写入。 字节b[off]
首先写入,然后字节b[off + 1]
等等。如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。 实施者可以使用
flushBits
的方法ImageOutputStreamImpl
来保证这一点。- Specified by:
-
write
在接口DataOutput
- Specified by:
-
write
在接口ImageOutputStream
- 参数
-
b
- 要写入的byte
的数组。 -
off
- 数据中的起始偏移量。 -
len
-byte
的len
的数量。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeBoolean
public void writeBoolean(boolean v) throws IOException
描述从接口ImageOutputStream
复制向流中写入一个boolean
值。 如果v
为真,则写入值(byte)1
; 如果v
为假,则写入值(byte)0
。如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
- Specified by:
-
writeBoolean
在接口DataOutput
- Specified by:
-
writeBoolean
在接口ImageOutputStream
- 参数
-
v
-boolean
。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeByte
public void writeByte(int v) throws IOException
描述从接口ImageOutputStream
复制将v
的8位低位写入流。v
的24位v
被忽略。 (这意味着writeByte
与整数参数完全一样)write
))如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
- Specified by:
-
writeByte
在接口DataOutput
- Specified by:
-
writeByte
在接口ImageOutputStream
- 参数
-
v
- 包含要写入的字节值的int
。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeShort
public void writeShort(int v) throws IOException
描述从接口ImageOutputStream
复制将v
字节的v
位写入流。v
的16位v
被忽略。 如果流使用网络字节顺序,则按顺序写入的字节为:(byte)((v >> 8) & 0xff) (byte)(v & 0xff)
否则写入的字节将为:(byte)(v & 0xff) (byte)((v >> 8) & 0xff)
如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
- Specified by:
-
writeShort
在接口DataOutput
- Specified by:
-
writeShort
在接口ImageOutputStream
- 参数
-
v
- 一个int
其中包含要写入的短值。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeChar
public void writeChar(int v) throws IOException
说明从界面ImageOutputStream
复制该方法是writeShort
的同义词。- Specified by:
-
writeChar
在接口DataOutput
- Specified by:
-
writeChar
接口ImageOutputStream
- 参数
-
v
- 包含要写入的char(unsigned short)值的int
。 - 异常
-
IOException
- 如果发生I / O错误。 - 另请参见:
-
ImageOutputStream.writeShort(int)
-
writeInt
public void writeInt(int v) throws IOException
描述从接口ImageOutputStream
复制将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。
- Specified by:
-
writeInt
在接口DataOutput
- Specified by:
-
writeInt
在接口ImageOutputStream
- 参数
-
v
- 一个包含要写入的值的int
。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeLong
public void writeLong(long v) throws IOException
说明从界面ImageOutputStream
复制将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。
- Specified by:
-
writeLong
在接口DataOutput
- Specified by:
-
writeLong
在接口ImageOutputStream
- 参数
-
v
- along
包含要写入的值。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeFloat
public void writeFloat(float v) throws IOException
说明从界面ImageOutputStream
复制向输出流写入由四个字节组成的float
值。 它这样做是因为,如果它首先将这个float
值到int
在完全相同的方式Float.floatToIntBits
方法,然后在的完全相同的方式写入的int值writeInt
方法。如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
- Specified by:
-
writeFloat
在接口DataOutput
- Specified by:
-
writeFloat
在接口ImageOutputStream
- 参数
-
v
- afloat
包含要写入的值。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeDouble
public void writeDouble(double v) throws IOException
说明从界面ImageOutputStream
复制向输出流写入由四个字节组成的double
值。 它这样做是因为,如果它首先将这个double
值到long
在完全相同的方式Double.doubleToLongBits
方法,然后在完全相同的方式写入长值writeLong
方法。如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
- Specified by:
-
writeDouble
接口DataOutput
- Specified by:
-
writeDouble
接口ImageOutputStream
- 参数
-
v
- 一个包含要写入的值的double
。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeBytes
public void writeBytes(String s) throws IOException
描述从接口ImageOutputStream
复制将一个字符串写入输出流。 对于字符串s
中的每个字符,按顺序,一个字节被写入输出流。 如果s
为null
,则抛出NullPointerException
。如果
s.length
为零,则不会写入任何字节。 否则,首先写入字符s[0]
,然后写入s[1]
等等; 写最后一个字符是s[s.length-1]
。 对于每个字符,写入一个字节,即低位字节,完全符合writeByte
方法。 字符串中每个字符的高8位被忽略。如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
- Specified by:
-
writeBytes
在接口DataOutput
- Specified by:
-
writeBytes
在接口ImageOutputStream
- 参数
-
s
- aString
包含要写入的值。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeChars
public void writeChars(String s) throws IOException
说明从界面ImageOutputStream
复制将一个字符串写入输出流。 对于字符串s
中的每个字符,按顺序,将两个字节写入输出流,根据当前字节顺序设置进行排序。 如果正在使用网络字节顺序,则首先写入高字节; 否则订单相反。 如果s
为null
,则抛出NullPointerException
。如果
s.length
为零,则不会写入任何字节。 否则,首先写入字符s[0]
,然后写入s[1]
,等等; 写最后一个字符是s[s.length-1]
。如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
- Specified by:
-
writeChars
在接口DataOutput
- Specified by:
-
writeChars
在接口ImageOutputStream
- 参数
-
s
- aString
包含要写入的值。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeUTF
public void writeUTF(String s) throws IOException
描述从接口ImageOutputStream
复制以网络字节顺序将两个字节的长度信息写入输出流,后跟字符串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
范围内,\u0800
3个字节表示,按照显示的顺序写入:(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不兼容。
- Specified by:
-
writeUTF
在接口DataOutput
- Specified by:
-
writeUTF
接口ImageOutputStream
- 参数
-
s
- aString
包含要写入的值。 - 异常
-
UTFDataFormatException
-如果的改性UTF-8表示s
需要超过65536个字节。 -
IOException
- 如果发生I / O错误。
-
writeShorts
public void writeShorts(short[] s, int off, int len) throws IOException
描述从接口ImageOutputStream
复制在当前位置写入流的序列。 如果len
为0,len
写任何内容。 短s[off]
先写,然后短s[off + 1]
,等等。 流的字节顺序用于确定写入单个字节的顺序。如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
- Specified by:
-
writeShorts
在接口ImageOutputStream
- 参数
-
s
- 要写入的short
的数组。 -
off
- 数据中的起始偏移量。 -
len
-short
的len
的数量。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeChars
public void writeChars(char[] c, int off, int len) throws IOException
说明从界面ImageOutputStream
复制在当前位置将一串字符写入流。 如果len
为0,len
写任何内容。 charc[off]
是先写的,然后是charc[off + 1]
,等等。 流的字节顺序用于确定写入单个字节的顺序。如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
- Specified by:
-
writeChars
在接口ImageOutputStream
- 参数
-
c
- 要写入的char
数组。 -
off
- 数据中的起始偏移量。 -
len
-char
的len
的数量。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeInts
public void writeInts(int[] i, int off, int len) throws IOException
描述从接口ImageOutputStream
复制在当前位置写入流的序列。 如果len
为0,len
写任何内容。 inti[off]
先写,然后是inti[off + 1]
,等等。 流的字节顺序用于确定写入单个字节的顺序。如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
- Specified by:
-
writeInts
在接口ImageOutputStream
- 参数
-
i
- 要写入的int
的数组。 -
off
- 数据中的起始偏移量。 -
len
-int
的len
的数量。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeLongs
public void writeLongs(long[] l, int off, int len) throws IOException
描述从接口ImageOutputStream
复制在当前位置写入流的序列。 如果len
为0,len
写任何内容。 长l[off]
是先写的,那么长l[off + 1]
,等等。 流的字节顺序用于确定写入单个字节的顺序。如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
- Specified by:
-
writeLongs
在接口ImageOutputStream
- 参数
-
l
- 要写入的long
的数组。 -
off
- 数据中的起始偏移量。 -
len
-long
的len
的数量。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeFloats
public void writeFloats(float[] f, int off, int len) throws IOException
描述从接口ImageOutputStream
复制在当前位置将一系列浮点写入流。 如果len
为0,则不会写入。 浮动f[off]
先写,然后浮动f[off + 1]
等等。 流的字节顺序用于确定写入单个字节的顺序。如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
- Specified by:
-
writeFloats
在接口ImageOutputStream
- 参数
-
f
- 要写入的float
的数组。 -
off
- 数据中的起始偏移量。 -
len
-float
的len
的数量。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeDoubles
public void writeDoubles(double[] d, int off, int len) throws IOException
说明从接口ImageOutputStream
复制将当前位置的一系列双精度写入流。 如果len
为0,则不会写入。 双d[off]
先写,然后双d[off + 1]
,等等。 流的字节顺序用于确定写入单个字节的顺序。如果流内的位偏移量不为零,则当前字节的剩余部分用0填充并首先写出。 写入后位偏移将为0。
- Specified by:
-
writeDoubles
在接口ImageOutputStream
- 参数
-
d
- 要写入的doubles
的数组。 -
off
- 数据中的起始偏移量。 -
len
-double
的len
的数量。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeBit
public void writeBit(int bit) throws IOException
说明从界面复制:ImageOutputStream
将由参数的最低有效位给出的单个位写入当前字节位置中当前位偏移量的流。 参数的高31位被忽略。 给定位替换该位置上的前一位。 位偏移前进一并减少模8。如果特定字节的任何位在字节被刷新到目的地时从未被设置,则这些位将自动设置为0。
- Specified by:
-
writeBit
接口ImageOutputStream
- 参数
-
bit
- 其最低有效位bit
的int
。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeBits
public void writeBits(long bits, int numBits) throws IOException
说明从界面ImageOutputStream
复制将bits
参数中的bits
参数的从左到右顺序的numBits
最低有效位给出的位序列写入当前字节位置当前位偏移量的流。 上限的64 - numBits
位的参数被忽略。 位偏移提前numBits
并减小模8。注意,0的位偏移总是表示字节的最高有效位,并且在遇到位时,位的字节顺序写出。 因此,位写入总是以网络字节顺序有效。 实际流字节顺序设置被忽略。位数据可以无限期累积到存储器中,直到
flushBefore
。 那时候,闪存位置之前的所有位数据将被写入。如果特定字节的任何位在字节被刷新到目的地时从未被设置,则这些位将自动设置为0。
- Specified by:
-
writeBits
接口ImageOutputStream
- 参数
-
bits
-along
包含要写入的位,从位置numBits - 1
的位开始到最低有效位。 -
numBits
- 一个从0到64之间的int
(含)。 - 异常
-
IOException
- 如果发生I / O错误。
-
flushBits
protected final void flushBits() throws IOException
如果位偏移量不为零,则强制当前字节中的剩余位为0,并将流位置提前一位。 该方法应该由write(int)
和write(byte[], int, int)
方法开头的子类调用。- 异常
-
IOException
- 如果发生I / O错误。
-
-