JavaTM 2 Platform
Standard Ed. 5.0

javax.imageio.stream
类 ImageOutputStreamImpl

java.lang.Object
  继承者 javax.imageio.stream.ImageInputStreamImpl
      继承者 javax.imageio.stream.ImageOutputStreamImpl
所有已实现的接口:
DataInput, DataOutput, ImageInputStream, ImageOutputStream
直接已知子类:
FileCacheImageOutputStream, FileImageOutputStream, MemoryCacheImageOutputStream

public abstract class ImageOutputStreamImpl
extends ImageInputStreamImpl
implements ImageOutputStream

实现 ImageOutputStream 接口的抽象类。此类设计用于减少必须由子类实现的方法数。


字段摘要
 
从类 javax.imageio.stream.ImageInputStreamImpl 继承的字段
bitOffset, byteOrder, flushedPos, streamPos
 
构造方法摘要
ImageOutputStreamImpl()
          构造一个 ImageOutputStreamImpl
 
方法摘要
protected  void flushBits()
          如果位偏移量为非零,则将当前字节中的剩余位强制归 0,并将流位置前移一个字节。
 void write(byte[] b)
          将数组 b 中的所有字节写入输出流。
abstract  void write(byte[] b, int off, int len)
          将数组 b 中的 len 个字节按顺序写入输出流。
abstract  void write(int b)
          将参数 b 的八个低位写入输出流。
 void writeBit(int bit)
          将单个位(由参数的最低有效位给定)写入到流的当前字节位置中的当前位偏移量。
 void writeBits(long bits, int numBits)
          将一个位序列(由 bits 参数的 numBits 个最低有效位按从左到右的顺序给定)写入到流的当前字节位置中的当前位偏移量。
 void writeBoolean(boolean v)
          将一个 boolean 值写入输出流。
 void writeByte(int v)
          将参数 v 的八个低位写入输出流。
 void writeBytes(String s)
          将一个字符串写入输出流。
 void writeChar(int v)
          将一个 char 值写入输出流,该值由两个字节组成。
 void writeChars(char[] c, int off, int len)
          将 char 序列写入到流中的当前位置。
 void writeChars(String s)
          将字符串 s 中的所有字符按顺序写入输出流,每个字符用两个字节表示。
 void writeDouble(double v)
          将一个 double 值写入输出流,该值由八个字节组成。
 void writeDoubles(double[] d, int off, int len)
          将 double 序列写入到流中的当前位置。
 void writeFloat(float v)
          将一个 float 值写入输出流,该值由四个字节组成。
 void writeFloats(float[] f, int off, int len)
          将 float 序列写入到流中的当前位置。
 void writeInt(int v)
          将一个 int 值写入输出流,该值由四个字节组成。
 void writeInts(int[] i, int off, int len)
          将 int 序列写入到流中的当前位置。
 void writeLong(long v)
          将一个 long 值写入输出流,该值由八个字节组成。
 void writeLongs(long[] l, int off, int len)
          将 long 序列写入到流中的当前位置。
 void writeShort(int v)
          将两个字节写入输出流,用它们表示参数值。
 void writeShorts(short[] s, int off, int len)
          将 short 序列写入到流中的当前位置。
 void writeUTF(String s)
          将表示长度信息的两个字节写入输出流,后跟字符串 s 中每个字符的 UTF-8 修改版表示形式。
 
从类 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
 
从类 java.lang.Object 继承的方法
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
从接口 javax.imageio.stream.ImageOutputStream 继承的方法
flushBefore
 
从接口 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
 

构造方法详细信息

ImageOutputStreamImpl

public ImageOutputStreamImpl()
构造一个 ImageOutputStreamImpl

方法详细信息

write

public abstract void write(int b)
                    throws IOException
从接口 DataOutput 复制的描述
将参数 b 的八个低位写入输出流。忽略 b 的 24 个高位。

指定者:
接口 DataOutput 中的 write
指定者:
接口 ImageOutputStream 中的 write
参数:
b - 要写入的字节。
抛出:
IOException - 如果发生 I/O 错误。

write

public void write(byte[] b)
           throws IOException
从接口 DataOutput 复制的描述
将数组 b 中的所有字节写入输出流。如果 bnull,则抛出 NullPointerException。如果 b.length 为零,则不写入字节。否则,首先写入字节 b[0],然后写入字节 b[1],依此类推;最后一个写入字节是 b[b.length-1]

指定者:
接口 DataOutput 中的 write
指定者:
接口 ImageOutputStream 中的 write
参数:
b - 数据。
抛出:
IOException - 如果发生 I/O 错误。

write

public abstract void write(byte[] b,
                           int off,
                           int len)
                    throws IOException
从接口 DataOutput 复制的描述
将数组 b 中的 len 个字节按顺序写入输出流。如果 bnull,则抛出 NullPointerException。如果 off 为负,或 len 为负,抑或 off+len 大于数组 b 的长度,则抛出 IndexOutOfBoundsException。如果 len 为零,则不写入字节。否则,首先写入字节 b[off],然后写入字节 b[off+1],依此类推;最后一个写入字节是 b[off+len-1]

指定者:
接口 DataOutput 中的 write
指定者:
接口 ImageOutputStream 中的 write
参数:
b - 数据。
off - 数据中的起始偏移量。
len - 要写入的字节数。
抛出:
IOException - 如果发生 I/O 错误。

writeBoolean

public void writeBoolean(boolean v)
                  throws IOException
从接口 DataOutput 复制的描述
将一个 boolean 值写入输出流。如果参数 vtrue,则写入值 (byte)1;如果 vfalse,则写入值 (byte)0。此方法写入的字节可由 DataInput 接口的 readBoolean 方法读取,然后该方法将返回一个等于 vboolean 值。

指定者:
接口 DataOutput 中的 writeBoolean
指定者:
接口 ImageOutputStream 中的 writeBoolean
参数:
v - 要写入的 boolean 值。
抛出:
IOException - 如果发生 I/O 错误。

writeByte

public void writeByte(int v)
               throws IOException
从接口 DataOutput 复制的描述
将参数 v 的八个低位写入输出流。忽略 v 的 24 个高位。(这意味着 writeByte 的作用与使用整数做参数的 write 完全相同。)此方法写入的字节可由 DataInput 接口的 readByte 方法读取,然后该方法将返回一个等于 (byte)vbyte 值。

指定者:
接口 DataOutput 中的 writeByte
指定者:
接口 ImageOutputStream 中的 writeByte
参数:
v - 要写入的字节值。
抛出:
IOException - 如果发生 I/O 错误。

writeShort

public void writeShort(int v)
                throws IOException
从接口 DataOutput 复制的描述
将两个字节写入输出流,用它们表示参数值。要写入的字节值(按顺序显示)是:


 (byte)(0xff & (v >> 8))
 (byte)(0xff & v)
  

此方法写入的字节可由 DataInput 接口的 readShort 方法读取,然后该方法将返回一个等于 (short)vshort 值。

指定者:
接口 DataOutput 中的 writeShort
指定者:
接口 ImageOutputStream 中的 writeShort
参数:
v - 要写入的 short 值。
抛出:
IOException - 如果发生 I/O 错误。

writeChar

public void writeChar(int v)
               throws IOException
从接口 DataOutput 复制的描述
将一个 char 值写入输出流,该值由两个字节组成。要写入的字节值(按顺序显示)是:


 (byte)(0xff & (v >> 8))
 (byte)(0xff & v)
 

此方法写入的字节可由 DataInput 接口的 readChar 方法读取,然后该方法将返回一个等于 (char)vchar 值。

指定者:
接口 DataOutput 中的 writeChar
指定者:
接口 ImageOutputStream 中的 writeChar
参数:
v - 要写入的 char 值。
抛出:
IOException - 如果发生 I/O 错误。
另请参见:
ImageOutputStream.writeShort(int)

writeInt

public void writeInt(int v)
              throws IOException
从接口 DataOutput 复制的描述
将一个 int 值写入输出流,该值由四个字节组成。要写入的字节值(按顺序显示)是:


 (byte)(0xff & (v >> 24))
 (byte)(0xff & (v >> 16))
 (byte)(0xff & (v >>    8))
 (byte)(0xff & v)
 

此方法写入的字节可由 DataInput 接口的 readInt 方法读取,然后该方法将返回一个等于 vint 值。

指定者:
接口 DataOutput 中的 writeInt
指定者:
接口 ImageOutputStream 中的 writeInt
参数:
v - 要写入的 int 值。
抛出:
IOException - 如果发生 I/O 错误。

writeLong

public void writeLong(long v)
               throws IOException
从接口 DataOutput 复制的描述
将一个 long 值写入输出流,该值由八个字节组成。要写入的字节值(按顺序显示)是:


 (byte)(0xff & (v >> 56))
 (byte)(0xff & (v >> 48))
 (byte)(0xff & (v >> 40))
 (byte)(0xff & (v >> 32))
 (byte)(0xff & (v >> 24))
 (byte)(0xff & (v >> 16))
 (byte)(0xff & (v >>  8))
 (byte)(0xff & v)
 

此方法写入的字节可由 DataInput 接口的 readLong 方法读取,然后该方法将返回一个等于 vlong 值。

指定者:
接口 DataOutput 中的 writeLong
指定者:
接口 ImageOutputStream 中的 writeLong
参数:
v - 要写入的 long 值。
抛出:
IOException - 如果发生 I/O 错误。

writeFloat

public void writeFloat(float v)
                throws IOException
从接口 DataOutput 复制的描述
将一个 float 值写入输出流,该值由四个字节组成。实现这一点的方式是:首先使用与 Float.floatToIntBits 方法完全相同的方式将此 float 值转换为一个 int 值,然后使用与 writeInt 方法完全相同的方式写入该 int 值。此方法写入的字节可由 DataInput 接口的 readFloat 方法读取,然后该方法将返回一个等于 vfloat 值。

指定者:
接口 DataOutput 中的 writeFloat
指定者:
接口 ImageOutputStream 中的 writeFloat
参数:
v - 要写入的 float 值。
抛出:
IOException - 如果发生 I/O 错误。

writeDouble

public void writeDouble(double v)
                 throws IOException
从接口 DataOutput 复制的描述
将一个 double 值写入输出流,该值由八个字节组成。实现这一点的方式是:首先使用与 Double.doubleToLongBits 方法相同的方式将此 double 值转换为一个 long 值,然后使用与 writeLong 方法完全相同的方式写入该 long 值。此方法写入的字节可由 DataInput 接口的 readDouble 方法读取,然后该方法将返回一个等于 vdouble 值。

指定者:
接口 DataOutput 中的 writeDouble
指定者:
接口 ImageOutputStream 中的 writeDouble
参数:
v - 要写入的 double 值。
抛出:
IOException - 如果发生 I/O 错误。

writeBytes

public void writeBytes(String s)
                throws IOException
从接口 DataOutput 复制的描述
将一个字符串写入输出流。字符串 s 中的每一个字符被依次写入输出流,每个字符用一个字节表示。如果 snull,则抛出 NullPointerException

如果 s.length 为零,则不写入字节。否则,首先写入字符 s[0],然后写入字符 s[1],依此类推;最后一个写入字符是 s[s.length-1]。使用与 writeByte 方法完全相同的方法为每个字符写入一个低位字节。忽略字符串中每个字符的八个高位。

指定者:
接口 DataOutput 中的 writeBytes
指定者:
接口 ImageOutputStream 中的 writeBytes
参数:
s - 要写入的字节字符串。
抛出:
IOException - 如果发生 I/O 错误。

writeChars

public void writeChars(String s)
                throws IOException
从接口 DataOutput 复制的描述
将字符串 s 中的所有字符按顺序写入输出流,每个字符用两个字节表示。如果 snull,则抛出 NullPointerException。如果 s.length 为零,则不写入字符。否则,首先写入字符 s[0],然后写入字符 s[1],依此类推;最后一个写入字符是 s[s.length-1]。使用与 writeChar 方法完全相同的方法为每个字符实际写入两个字节,先使用高位字节。

指定者:
接口 DataOutput 中的 writeChars
指定者:
接口 ImageOutputStream 中的 writeChars
参数:
s - 要写入的字符串值。
抛出:
IOException - 如果发生 I/O 错误。

writeUTF

public void writeUTF(String s)
              throws IOException
从接口 DataOutput 复制的描述
将表示长度信息的两个字节写入输出流,后跟字符串 s 中每个字符的 UTF-8 修改版表示形式。如果 snull,则抛出 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 中所有字符的 1 字节、2 字节或 3 字节表示形式。

此方法写入的字节可由 DataInput 接口的 readUTF 方法读取,然后该方法将返回一个等于 sString 值。

指定者:
接口 DataOutput 中的 writeUTF
指定者:
接口 ImageOutputStream 中的 writeUTF
参数:
s - 要写入的字符串值。
抛出:
IOException - 如果发生 I/O 错误。

writeShorts

public void writeShorts(short[] s,
                        int off,
                        int len)
                 throws IOException
从接口 ImageOutputStream 复制的描述
将 short 序列写入到流中的当前位置。如果 len 为 0,则不写入任何字节。首先写入 short s[off],然后写入 short s[off + 1],依此类推。流的字节顺序用来确定写入个别字节的顺序。

如果流中的位偏移量不为零,则首先将当前字节的余项用 0 填充并将其写出。写出后位偏移量将为 0。

指定者:
接口 ImageOutputStream 中的 writeShorts
参数:
s - 要写入的 short 数组。
off - 数据中的初始偏移量。
len - 要写入的 short 数。
抛出:
IOException - 如果发生 I/O 错误。

writeChars

public void writeChars(char[] c,
                       int off,
                       int len)
                throws IOException
从接口 ImageOutputStream 复制的描述
将 char 序列写入到流中的当前位置。如果 len 为 0,则不写入任何字节。首先写入 char c[off],然后写入 char c[off + 1],依此类推。流的字节顺序用来确定写入个别字节的顺序。

如果流中的位偏移量不为零,则首先将当前字节的余项用 0 填充并将其写出。写出后位偏移量将为 0。

指定者:
接口 ImageOutputStream 中的 writeChars
参数:
c - 要写入的 char 数组。
off - 数据中的初始偏移量。
len - 要写入的 char 数。
抛出:
IOException - 如果发生 I/O 错误。

writeInts

public void writeInts(int[] i,
                      int off,
                      int len)
               throws IOException
从接口 ImageOutputStream 复制的描述
将 int 序列写入到流中的当前位置。如果 len 为 0,则不写入任何字节。首先写入 int i[off],然后写入 int i[off + 1],依此类推。流的字节顺序用来确定写入个别字节的顺序。

如果流中的位偏移量不为零,则首先将当前字节的余项用 0 填充并将其写出。写出后位偏移量将为 0。

指定者:
接口 ImageOutputStream 中的 writeInts
参数:
i - 要写入的 int 数组。
off - 数据中的初始偏移量。
len - 要写入的 int 数。
抛出:
IOException - 如果发生 I/O 错误。

writeLongs

public void writeLongs(long[] l,
                       int off,
                       int len)
                throws IOException
从接口 ImageOutputStream 复制的描述
将 long 序列写入到流中的当前位置。如果 len 为 0,则不写入任何字节。首先写入 long l[off],然后写入 long l[off + 1],依此类推。流的字节顺序用来确定写入个别字节的顺序。

如果流中的位偏移量不为零,则首先将当前字节的余项用 0 填充并将其写出。写出后位偏移量将为 0。

指定者:
接口 ImageOutputStream 中的 writeLongs
参数:
l - 要写入的 long 数组。
off - 数据中的初始偏移量。
len - 要写入的 long 数。
抛出:
IOException - 如果发生 I/O 错误。

writeFloats

public void writeFloats(float[] f,
                        int off,
                        int len)
                 throws IOException
从接口 ImageOutputStream 复制的描述
将 float 序列写入到流中的当前位置。如果 len 为 0,则不写入任何字节。首先写入 float f[off],然后写入 float f[off + 1],依此类推。流的字节顺序用来确定写入个别字节的顺序。

如果流中的位偏移量不为零,则首先将当前字节的余项用 0 填充并将其写出。写出后位偏移量将为 0。

指定者:
接口 ImageOutputStream 中的 writeFloats
参数:
f - 要写入的 float 数组。
off - 数据中的初始偏移量。
len - 要写入的 float 数。
抛出:
IOException - 如果发生 I/O 错误。

writeDoubles

public void writeDoubles(double[] d,
                         int off,
                         int len)
                  throws IOException
从接口 ImageOutputStream 复制的描述
将 double 序列写入到流中的当前位置。如果 len 为 0,则不写入任何字节。首先写入 double d[off],然后写入 double d[off + 1],依此类推。流的字节顺序用来确定写入个别字节的顺序。

如果流中的位偏移量不为零,则首先将当前字节的余项用 0 填充并将其写出。写出后位偏移量将为 0。

指定者:
接口 ImageOutputStream 中的 writeDoubles
参数:
d - 要写入的 double 数组。
off - 数据中的初始偏移量。
len - 要写入的 double 数。
抛出:
IOException - 如果发生 I/O 错误。

writeBit

public void writeBit(int bit)
              throws IOException
从接口 ImageOutputStream 复制的描述
将单个位(由参数的最低有效位给定)写入到流的当前字节位置中的当前位偏移量。忽略参数的高 31 位。给定位将替代之前位于该位置的位。将位偏移量加 1 并将其模数减 8。

如果在刷新字节缓冲并转到目标时从来没有设置特定字节的某些位,则这些位将被自动设置为 0。

指定者:
接口 ImageOutputStream 中的 writeBit
参数:
bit - 一个 int,其最低有效位将被写入到流中。
抛出:
IOException - 如果发生 I/O 错误。

writeBits

public void writeBits(long bits,
                      int numBits)
               throws IOException
从接口 ImageOutputStream 复制的描述
将一个位序列(由 bits 参数的 numBits 个最低有效位按从左到右的顺序给定)写入到流的当前字节位置中的当前位偏移量。忽略参数的高 64 - numBits 位。位偏移量将加 numBits 并减少模数 8。注意,位偏移量 0 总是指示字节的最高有效位,位字节按照遇到它们的顺序依次被写入。因此以网络字节顺序进行位的写入总是有效的。忽略实际流字节顺序设置。

在调用 flushBefore 之前,位数据可以在内存中无限累积。调用时将写入刷新位置之前的所有位数据。

如果在刷新字节缓冲并转到目标时特定字节的某些位一直没有被设置,则这些位将自动设置为 0。

指定者:
接口 ImageOutputStream 中的 writeBits
参数:
bits - 一个 long,它包含要写入的位(从 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 错误。

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策