|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
public interface ImageOutputStream
供 ImageWriter
使用的可尋找輸出串流介面。各種輸出目標(如 OutputStream
、File
以及將來的快速 I/O 目標)都可以通過此介面的恰當實作進行“包裹”,供 Image I/O API 使用。
與標準 OutputStream
不同的是,ImageOutputStream 擴展其對應方 ImageInputStream
。因此它能夠在對串流進行寫入的同時從該串流進行讀取。儘管處理位元組定位寫入操作之前非零位偏移量的語義一定不同於處理位元組定位讀取操作之前非零位偏移量的語義,但讀取操作和寫入操作使用相同的尋找和刷新位置。讀取位元組時,任何位偏移量在讀取前都被設置為 0;寫入位元組時,如果位偏移量不為零,則位元組中的剩餘位將被寫入 0。然後,位元組定位寫入開始於下一個位元組位置。
ImageInputStream
方法摘要 | |
---|---|
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 參數的 numBits 個最低有效位按從左到右的順序給定)寫入到串流的當前位元組位置中的當前位偏移量。 |
void |
writeBoolean(boolean v)
將一個 boolean 值寫入到串流中。 |
void |
writeByte(int v)
將 v 的 8 個低位寫入到串流中。 |
void |
writeBytes(String s)
將一個字元串寫入輸出串流。 |
void |
writeChar(int v)
此方法與 同義。 |
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 |
方法詳細資訊 |
---|
void write(int b) throws IOException
b
的 24 個高位將被忽略。
如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。實作方可使用
的 ImageOutputStreamImpl
方法來保證這一點。
flushBits
DataOutput
中的 write
b
- 一個 int
,其低 8 位將被寫入。
IOException
- 如果發生 I/O 錯誤。void write(byte[] b) throws IOException
b.length
為 0,則不寫入任何位元組。首先寫入位元組 b[0]
,然後寫入位元組 b[1]
,依此類別推。
如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。
DataOutput
中的 write
b
- 要寫入的 byte
陣列。
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。實作方可使用
的 ImageOutputStreamImpl
方法來保證這一點。
flushBits
DataOutput
中的 write
b
- 要寫入的 byte
陣列。off
- 資料中的初始偏移量。len
- 要寫入的 byte
數。
IndexOutOfBoundsException
- 如果 off
為負、len
為負或者 off + len
大於 b.length
。
NullPointerException
- 如果 b
為 null
。
IOException
- 如果發生 I/O 錯誤。void writeBoolean(boolean v) throws IOException
boolean
值寫入到串流中。如果 v
為 true,則寫入值 (byte)1
;如果 v
為 false,則寫入值 (byte)0
。
如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。
DataOutput
中的 writeBoolean
v
- 要寫入的 boolean
值。
IOException
- 如果發生 I/O 錯誤。void writeByte(int v) throws IOException
v
的 8 個低位寫入到串流中。忽略 v
的 24 個高位。(這意味著 writeByte
的作用與使用整數做參數的 write
完全相同。)
如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。
DataOutput
中的 writeByte
v
- 一個 int
,包含要寫入的 byte 值。
IOException
- 如果發生 I/O 錯誤。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 錯誤。void writeChar(int v) throws IOException
writeShort
同義。
DataOutput
中的 writeChar
v
- 一個 int
,它包含要寫入的 char(無符號 short)值。
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)否則,寫入的位元組將為:
(byte)(v & 0xff) (byte)((v >> 8) & 0xff) (byte)((v >> 16) & 0xff) (byte)((v >> 24) & 0xff)
如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。
DataOutput
中的 writeInt
v
- 一個 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。
DataOutput
中的 writeLong
v
- 一個 long
,它包含要寫入的值。
IOException
- 如果發生 I/O 錯誤。void writeFloat(float v) throws IOException
float
值(由四個位元組組成)寫入輸出串流。實作方式是:首先使用與 Float.floatToIntBits
方法完全相同的方式將此 float
值轉換為一個 int
值,然後使用與 writeInt
方法完全相同的方式寫入該 int
值。
如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。
DataOutput
中的 writeFloat
v
- 一個 float
,它包含要寫入的值。
IOException
- 如果發生 I/O 錯誤。void writeDouble(double v) throws IOException
double
值寫入輸出串流,該值由四個位元組組成。實作這一點的方式是:首先使用與 Double.doubleToLongBits
方法相同的方式將此 double
值轉換為一個 long
值,然後使用與 writeLong
方法完全相同的方式寫入該 long
值。
如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。
DataOutput
中的 writeDouble
v
- 一個 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
方法完全相同的方式把字元的低位寫入一個低位位元組。字元串中每個字元的八個高位將被忽略。
如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。
DataOutput
中的 writeBytes
s
- 一個 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。
DataOutput
中的 writeChars
s
- 一個 String
,它包含要寫入的值。
NullPointerException
- 如果 s
為 null
。
IOException
- 如果發生 I/O 錯誤。void writeUTF(String s) throws IOException
s
中每個字元的 UTF-8 修改版表示形式。如果 s
為 null
,則拋出 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
- 如果 s
為 null
。
UTFDataFormatException
- 如果 s
的 UTF-8 修改版表示形式要求的位元組數大於 65536。
IOException
- 如果發生 I/O 錯誤。void writeShorts(short[] s, int off, int len) throws IOException
len
為 0,則不寫入任何位元組。首先寫入 short s[off]
,然後寫入 short s[off + 1]
,依此類別推。串流的位元組順序用來確定寫入各個位元組的順序。
如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。
s
- 要寫入的 short
陣列。off
- 資料中的初始偏移量。len
- 要寫入的 short
數。
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,則不寫入任何位元組。首先寫入 char c[off]
,然後寫入 char c[off + 1]
,依此類別推。串流的位元組順序用來確定寫入個別位元組的順序。
如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。
c
- 要寫入的 char
陣列。off
- 資料中的初始偏移量。len
- 要寫入的 char
數。
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
陣列。off
- 資料中的初始偏移量。len
- 要寫入的 int
數。
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,則不寫入任何位元組。首先寫入 long l[off]
,然後寫入 long l[off + 1]
,依此類別推。串流的位元組順序用來確定寫入個別位元組的順序。
如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。
l
- 要寫入的 long
陣列。off
- 資料中的初始偏移量。len
- 要寫入的 long
數。
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,則不寫入任何位元組。首先寫入 float f[off]
,然後寫入 float f[off + 1]
,依此類別推。串流的位元組順序用來確定寫入個別位元組的順序。
如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。
f
- 要寫入的 float
陣列。off
- 資料中的初始偏移量。len
- 要寫入的 float
數。
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,則不寫入任何位元組。首先寫入 double d[off]
,然後寫入 double d[off + 1]
,依此類別推。串流的位元組順序用來確定寫入個別位元組的順序。
如果串流中的位偏移量不為零,則首先將當前位元組的余項用 0 填充並將其寫出。寫出後位偏移量將為 0。
d
- 要寫入的 double
陣列。off
- 資料中的初始偏移量。len
- 要寫入的 double
數。
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
個最低有效位按從左到右的順序給定)寫入到串流的當前位元組位置中的當前位偏移量。忽略參數的高 64 - numBits
位。位偏移量將加 numBits
並減少模數 8。注意,位偏移量 0 總是指示位元組的最高有效位,位位元組按照遇到它們的順序依次被寫入。因此以網路位元組順序進行位的寫入總是有效的。忽略實際串流位元組順序設置。
在調用 flushBefore
之前,位資料可以在記憶體中無限累積。調用時將寫入刷新位置之前的所有位資料。
如果在刷新位元組緩衝並轉到目標時特定位元組的某些位一直沒有被設置,則這些位將自動設置為 0。
bits
- 一個 long
,它包含要寫入的位(從 numBits - 1
開始下至最低有效位)。numBits
- 一個 0 到 64 之間(包括兩者)的 int
。
IllegalArgumentException
- 如果 numBits
不在 0 到 64 之間(包括兩者)。
IOException
- 如果發生 I/O 錯誤。void flushBefore(long pos) throws IOException
OutputStream
或 File
)。試圖尋找串流的刷新部分將導致拋出 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。