JavaTM 2 Platform
Standard Ed. 6

javax.imageio.stream
介面 ImageOutputStream

所有父級介面:
DataInput, DataOutput, ImageInputStream
所有已知實作類別:
FileCacheImageOutputStream, FileImageOutputStream, ImageOutputStreamImpl, MemoryCacheImageOutputStream

public interface ImageOutputStream
extends ImageInputStream, DataOutput

ImageWriter 使用的可尋找輸出串流介面。各種輸出目標(如 OutputStreamFile 以及將來的快速 I/O 目標)都可以通過此介面的恰當實作進行“包裹”,供 Image I/O API 使用。

與標準 OutputStream 不同的是,ImageOutputStream 擴展其對應方 ImageInputStream。因此它能夠在對串流進行寫入的同時從該串流進行讀取。儘管處理位元組定位寫入操作之前非零位偏移量的語義一定不同於處理位元組定位讀取操作之前非零位偏移量的語義,但讀取操作和寫入操作使用相同的尋找和刷新位置。讀取位元組時,任何位偏移量在讀取前都被設置為 0;寫入位元組時,如果位偏移量不為零,則位元組中的剩餘位將被寫入 0。然後,位元組定位寫入開始於下一個位元組位置。

另請參見:
ImageInputStream

方法摘要
 void flushBefore(long pos)
          刷新給定位置之前所有資料的緩衝並轉到底層目標(如 OutputStreamFile)。
 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 參數的 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.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
 

方法詳細資訊

write

void write(int b)
           throws IOException
將單個位元組寫入到串流中的當前位置。b 的 24 個高位將被忽略。

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

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

write

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

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

指定者:
介面 DataOutput 中的 write
參數:
b - 要寫入的 byte 陣列。
拋出:
NullPointerException - 如果 bnull
IOException - 如果發生 I/O 錯誤。

write

void write(byte[] b,
           int off,
           int len)
           throws IOException
將位元組序列寫入到串流中的當前位置。如果 len 為 0,則不寫入任何位元組。首先寫入位元組 b[off],然後寫入位元組 b[off + 1],依此類別推。

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

指定者:
介面 DataOutput 中的 write
參數:
b - 要寫入的 byte 陣列。
off - 資料中的初始偏移量。
len - 要寫入的 byte 數。
拋出:
IndexOutOfBoundsException - 如果 off 為負、len 為負或者 off + len 大於 b.length
NullPointerException - 如果 bnull
IOException - 如果發生 I/O 錯誤。

writeBoolean

void writeBoolean(boolean v)
                  throws IOException
將一個 boolean 值寫入到串流中。如果 v 為 true,則寫入值 (byte)1;如果 v 為 false,則寫入值 (byte)0

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

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

writeByte

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

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

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

writeShort

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

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

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

writeChar

void writeChar(int v)
               throws IOException
此方法與 writeShort 同義。

指定者:
介面 DataOutput 中的 writeChar
參數:
v - 一個 int,它包含要寫入的 char(無符號 short)值。
拋出:
IOException - 如果發生 I/O 錯誤。
另請參見:
writeShort(int)

writeInt

void writeInt(int v)
              throws IOException
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
參數:
v - 一個 int,它包含要寫入的值。
拋出:
IOException - 如果發生 I/O 錯誤。

writeLong

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。

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

writeFloat

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

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

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

writeDouble

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

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

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

writeBytes

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

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

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

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

writeChars

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

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

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

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

writeUTF

void writeUTF(String s)
              throws IOException
將表示長度資訊的兩個位元組按網路位元組順序寫入輸出串流,後跟字元串 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
參數:
s - 一個 String,它包含要寫入的值。
拋出:
NullPointerException - 如果 snull
UTFDataFormatException - 如果 s 的 UTF-8 修改版表示形式要求的位元組數大於 65536。
IOException - 如果發生 I/O 錯誤。

writeShorts

void writeShorts(short[] s,
                 int off,
                 int len)
                 throws IOException
將 short 序列寫入到串流中的當前位置。如果 len 為 0,則不寫入任何位元組。首先寫入 short s[off],然後寫入 short s[off + 1],依此類別推。串流的位元組順序用來確定寫入各個位元組的順序。

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

參數:
s - 要寫入的 short 陣列。
off - 資料中的初始偏移量。
len - 要寫入的 short 數。
拋出:
IndexOutOfBoundsException - 如果 off 為負、len 為負或者 off + len 大於 s.length
NullPointerException - 如果 snull
IOException - 如果發生 I/O 錯誤。

writeChars

void writeChars(char[] c,
                int off,
                int len)
                throws IOException
將 char 序列寫入到串流中的當前位置。如果 len 為 0,則不寫入任何位元組。首先寫入 char c[off],然後寫入 char c[off + 1],依此類別推。串流的位元組順序用來確定寫入個別位元組的順序。

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

參數:
c - 要寫入的 char 陣列。
off - 資料中的初始偏移量。
len - 要寫入的 char 數。
拋出:
IndexOutOfBoundsException - 如果 off 為負、len 為負或者 off + len 大於 c.length
NullPointerException - 如果 cnull
IOException - 如果發生 I/O 錯誤。

writeInts

void writeInts(int[] i,
               int off,
               int len)
               throws IOException
將 int 序列寫入到串流中的當前位置。如果 len 為 0,則不寫入任何位元組。首先寫入 int i[off],然後寫入 int i[off + 1],依此類別推。串流的位元組順序用來確定寫入個別位元組的順序。

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

參數:
i - 要寫入的 int 陣列。
off - 資料中的初始偏移量。
len - 要寫入的 int 數。
拋出:
IndexOutOfBoundsException - 如果 off 為負、len 為負或者 off + len 大於 i.length
NullPointerException - 如果 inull
IOException - 如果發生 I/O 錯誤。

writeLongs

void writeLongs(long[] l,
                int off,
                int len)
                throws IOException
將 long 序列寫入到串流中的當前位置。如果 len 為 0,則不寫入任何位元組。首先寫入 long l[off],然後寫入 long l[off + 1],依此類別推。串流的位元組順序用來確定寫入個別位元組的順序。

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

參數:
l - 要寫入的 long 陣列。
off - 資料中的初始偏移量。
len - 要寫入的 long 數。
拋出:
IndexOutOfBoundsException - 如果 off 為負、len 為負或者 off + len 大於 l.length
NullPointerException - 如果 lnull
IOException - 如果發生 I/O 錯誤。

writeFloats

void writeFloats(float[] f,
                 int off,
                 int len)
                 throws IOException
將 float 序列寫入到串流中的當前位置。如果 len 為 0,則不寫入任何位元組。首先寫入 float f[off],然後寫入 float f[off + 1],依此類別推。串流的位元組順序用來確定寫入個別位元組的順序。

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

參數:
f - 要寫入的 float 陣列。
off - 資料中的初始偏移量。
len - 要寫入的 float 數。
拋出:
IndexOutOfBoundsException - 如果 off 為負、len 為負或者 off + len 大於 f.length
NullPointerException - 如果 fnull
IOException - 如果發生 I/O 錯誤。

writeDoubles

void writeDoubles(double[] d,
                  int off,
                  int len)
                  throws IOException
將 double 序列寫入到串流中的當前位置。如果 len 為 0,則不寫入任何位元組。首先寫入 double d[off],然後寫入 double d[off + 1],依此類別推。串流的位元組順序用來確定寫入個別位元組的順序。

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

參數:
d - 要寫入的 double 陣列。
off - 資料中的初始偏移量。
len - 要寫入的 double 數。
拋出:
IndexOutOfBoundsException - 如果 off 為負、len 為負或者 off + len 大於 d.length
NullPointerException - 如果 dnull
IOException - 如果發生 I/O 錯誤。

writeBit

void writeBit(int bit)
              throws IOException
將單個位(由參數的最低有效位給定)寫入到串流的當前位元組位置中的當前位偏移量。忽略參數的高 31 位。給定位將替代之前位於該位置的位。將位偏移量加 1 並將其模數減 8。

如果在刷新某個位元組的緩衝並轉送到目標時一直沒有設置過該位元組的某些位,則這些位將被自動設置為 0。

參數:
bit - 一個 int,其最低有效位將被寫入到串流中。
拋出:
IOException - 如果發生 I/O 錯誤。

writeBits

void writeBits(long bits,
               int numBits)
               throws IOException
將一個位序列(由 bits 參數的 numBits 個最低有效位按從左到右的順序給定)寫入到串流的當前位元組位置中的當前位偏移量。忽略參數的高 64 - numBits 位。位偏移量將加 numBits 並減少模數 8。注意,位偏移量 0 總是指示位元組的最高有效位,位位元組按照遇到它們的順序依次被寫入。因此以網路位元組順序進行位的寫入總是有效的。忽略實際串流位元組順序設置。

在調用 flushBefore 之前,位資料可以在記憶體中無限累積。調用時將寫入刷新位置之前的所有位資料。

如果在刷新位元組緩衝並轉到目標時特定位元組的某些位一直沒有被設置,則這些位將自動設置為 0。

參數:
bits - 一個 long,它包含要寫入的位(從 numBits - 1 開始下至最低有效位)。
numBits - 一個 0 到 64 之間(包括兩者)的 int
拋出:
IllegalArgumentException - 如果 numBits 不在 0 到 64 之間(包括兩者)。
IOException - 如果發生 I/O 錯誤。

flushBefore

void flushBefore(long pos)
                 throws IOException
刷新給定位置之前所有資料的緩衝並轉到底層目標(如 OutputStreamFile)。試圖尋找串流的刷新部分將導致拋出 IndexOutOfBoundsException

指定者:
介面 ImageInputStream 中的 flushBefore
參數:
pos - 一個 long,它包含可能被刷新並轉到目標的串流前綴的長度。
拋出:
IndexOutOfBoundsException - 如果 pos 位於串流緩衝的刷新部分或當前串流位置之後。
IOException - 如果發生 I/O 錯誤。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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