JavaTM 2 Platform
Standard Ed. 6

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)
          將位元組序列寫入到串流中的當前位置。
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)
          將 char 序列寫入到串流中的當前位置。
 void writeChars(String 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)
          將 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)
          將 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
從介面 ImageOutputStream 複製的描述
將單個位元組寫入到串流中的當前位置。b 的 24 個高位將被忽略。

如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。實作方可使用 ImageOutputStreamImplflushBits 方法來保證這一點。

指定者:
介面 DataOutput 中的 write
指定者:
介面 ImageOutputStream 中的 write
參數:
b - 一個 int,其低 8 位將被寫入。
拋出:
IOException - 如果發生 I/O 錯誤。

write

public void write(byte[] b)
           throws IOException
從介面 ImageOutputStream 複製的描述
將位元組序列寫入到串流中的當前位置。如果 b.length 為 0,則不寫入任何位元組。首先寫入位元組 b[0],然後寫入位元組 b[1],依此類別推。

如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。

指定者:
介面 DataOutput 中的 write
指定者:
介面 ImageOutputStream 中的 write
參數:
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。實作方可使用 ImageOutputStreamImplflushBits 方法來保證這一點。

指定者:
介面 DataOutput 中的 write
指定者:
介面 ImageOutputStream 中的 write
參數:
b - 要寫入的 byte 陣列。
off - 資料中的初始偏移量。
len - 要寫入的 byte 數。
拋出:
IOException - 如果發生 I/O 錯誤。

writeBoolean

public void writeBoolean(boolean v)
                  throws IOException
從介面 ImageOutputStream 複製的描述
將一個 boolean 值寫入到串流中。如果 v 為 true,則寫入值 (byte)1;如果 v 為 false,則寫入值 (byte)0

如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。

指定者:
介面 DataOutput 中的 writeBoolean
指定者:
介面 ImageOutputStream 中的 writeBoolean
參數:
v - 要寫入的 boolean 值。
拋出:
IOException - 如果發生 I/O 錯誤。

writeByte

public void writeByte(int v)
               throws IOException
從介面 ImageOutputStream 複製的描述
v 的 8 個低位寫入到串流中。忽略 v 的 24 個高位。(這意味著 writeByte 的作用與使用整數做參數的 write 完全相同。)

如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。

指定者:
介面 DataOutput 中的 writeByte
指定者:
介面 ImageOutputStream 中的 writeByte
參數:
v - 一個 int,包含要寫入的 byte 值。
拋出:
IOException - 如果發生 I/O 錯誤。

writeShort

public void writeShort(int v)
                throws IOException
從介面 ImageOutputStream 複製的描述
v 的 16 個低位寫入到串流中。忽略 v 的 16 個高位。如果串流使用網路位元組順序,則寫入的位元組將依次為:
(byte)((v >> 8) & 0xff)
 (byte)(v & 0xff)
 
否則,寫入的位元組將為:
 (byte)(v & 0xff)
(byte)((v >> 8) & 0xff)
 

如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。

指定者:
介面 DataOutput 中的 writeShort
指定者:
介面 ImageOutputStream 中的 writeShort
參數:
v - 一個 int,包含要寫入的 short 值。
拋出:
IOException - 如果發生 I/O 錯誤。

writeChar

public void writeChar(int v)
               throws IOException
從介面 ImageOutputStream 複製的描述
此方法與 writeShort 同義。

指定者:
介面 DataOutput 中的 writeChar
指定者:
介面 ImageOutputStream 中的 writeChar
參數:
v - 一個 int,它包含要寫入的 char(無符號 short)值。
拋出:
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)
 
否則,寫入的位元組將為:
 (byte)(v & 0xff)
(byte)((v >> 8) & 0xff)
(byte)((v >> 16) & 0xff)
(byte)((v >> 24) & 0xff)
 

如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。

指定者:
介面 DataOutput 中的 writeInt
指定者:
介面 ImageOutputStream 中的 writeInt
參數:
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。

指定者:
介面 DataOutput 中的 writeLong
指定者:
介面 ImageOutputStream 中的 writeLong
參數:
v - 一個 long,它包含要寫入的值。
拋出:
IOException - 如果發生 I/O 錯誤。

writeFloat

public void writeFloat(float v)
                throws IOException
從介面 ImageOutputStream 複製的描述
將一個 float 值(由四個位元組組成)寫入輸出串流。實作方式是:首先使用與 Float.floatToIntBits 方法完全相同的方式將此 float 值轉換為一個 int 值,然後使用與 writeInt 方法完全相同的方式寫入該 int 值。

如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。

指定者:
介面 DataOutput 中的 writeFloat
指定者:
介面 ImageOutputStream 中的 writeFloat
參數:
v - 一個 float,它包含要寫入的值。
拋出:
IOException - 如果發生 I/O 錯誤。

writeDouble

public void writeDouble(double v)
                 throws IOException
從介面 ImageOutputStream 複製的描述
將一個 double 值寫入輸出串流,該值由四個位元組組成。實作這一點的方式是:首先使用與 Double.doubleToLongBits 方法相同的方式將此 double 值轉換為一個 long 值,然後使用與 writeLong 方法完全相同的方式寫入該 long 值。

如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。

指定者:
介面 DataOutput 中的 writeDouble
指定者:
介面 ImageOutputStream 中的 writeDouble
參數:
v - 一個 double,它包含要寫入的值。
拋出:
IOException - 如果發生 I/O 錯誤。

writeBytes

public void writeBytes(String s)
                throws IOException
從介面 ImageOutputStream 複製的描述
將一個字元串寫入輸出串流。字元串 s 中的每一個字元被依次寫入輸出串流,每個字元用一個位元組表示。如果 snull,則拋出 NullPointerException

如果 s.length 為零,則不寫入任何位元組。否則,首先寫入字元 s[0],然後寫入字元 s[1],依此類別推;最後一個寫入字元是 s[s.length-1]。對於每個字元,將使用與 writeByte 方法完全相同的方式把字元的低位寫入一個低位位元組。字元串中每個字元的八個高位將被忽略。

如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。

指定者:
介面 DataOutput 中的 writeBytes
指定者:
介面 ImageOutputStream 中的 writeBytes
參數:
s - 一個 String,它包含要寫入的值。
拋出:
IOException - 如果發生 I/O 錯誤。

writeChars

public void writeChars(String s)
                throws IOException
從介面 ImageOutputStream 複製的描述
將一個字元串寫入輸出串流。字元串 s 中的每個字元將根據當前位元組順序設置依次寫入輸出串流,每個字元用兩個位元組表示。如果使用網路位元組順序,則首先寫入高位位元組;否則相反。如果 snull,則拋出 NullPointerException

如果 s.length 為零,則不寫入位元組。否則,首先寫入字元 s[0],然後寫入字元 s[1],依此類別推;最後一個寫入字元是 s[s.length-1]

如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。

指定者:
介面 DataOutput 中的 writeChars
指定者:
介面 ImageOutputStream 中的 writeChars
參數:
s - 一個 String,它包含要寫入的值。
拋出:
IOException - 如果發生 I/O 錯誤。

writeUTF

public void writeUTF(String s)
              throws IOException
從介面 ImageOutputStream 複製的描述
將表示長度資訊的兩個位元組按網路位元組順序寫入輸出串流,後跟字元串 s 中每個字元的 UTF-8 修改版表示形式。如果 snull,則拋出 NullPointerException。根據字元的值,將字元串 s 中每個字元轉換成一個位元組、兩個位元組或三個位元組的位元組組。

如果字元 c\u0001\u007f 的範圍內,則用一個位元組表示:

(byte)(b)
 

如果字元 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 位元組表示形式。

忽略當前位元組順序設置。

如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。

註:使用標準 UTF-8 圖像格式的實作不應該使用此方法,因為此處使用的 UTF-8 修改版與標準 UTF-8 不相容。

指定者:
介面 DataOutput 中的 writeUTF
指定者:
介面 ImageOutputStream 中的 writeUTF
參數:
s - 一個 String,它包含要寫入的值。
拋出:
UTFDataFormatException - 如果 s 的 UTF-8 修改版表示形式要求的位元組數大於 65536。
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. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only