W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
java.lang.Object
|---java.io.OutputStream
|---|---java.io.ObjectOutputStream
public class ObjectOutputStream
extends OutputStream
implements ObjectOutput, ObjectStreamConstants
ObjectOutputStream 將 Java 對象的原始數(shù)據(jù)類型和圖形寫入 OutputStream。 可以使用 ObjectInputStream 讀取(重構)對象。 對象的持久存儲可以通過使用流的文件來實現(xiàn)。 如果流是網(wǎng)絡套接字流,則可以在另一個主機或另一個進程中重構對象。
只有支持 java.io.Serializable 接口的對象才能寫入流。 每個可序列化對象的類都經(jīng)過編碼,包括類的類名和簽名、對象的字段和數(shù)組的值,以及從初始對象引用的任何其他對象的閉包。
writeObject 方法用于將對象寫入流。任何對象,包括字符串和數(shù)組,都是用 writeObject 編寫的??梢詫⒍鄠€對象或原語寫入流。對象必須從相應的 ObjectInputstream 以與寫入時相同的類型和相同的順序讀回。
原始數(shù)據(jù)類型也可以使用 DataOutput 中的適當方法寫入流。也可以使用 writeUTF 方法寫入字符串。
對象的默認序列化機制寫入對象的類、類簽名以及所有非瞬態(tài)和非靜態(tài)字段的值。對其他對象的引用(瞬態(tài)或靜態(tài)字段除外)也會導致這些對象被寫入。使用引用共享機制對單個對象的多個引用進行編碼,以便對象的圖形可以恢復到與原始對象寫入時相同的形狀。
比如寫一個ObjectInputStream中的例子可以讀取的對象:
FileOutputStream fos = new FileOutputStream("t.tmp");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeInt(12345);
oos.writeObject("Today");
oos.writeObject(new Date());
oos.close();
在序列化和反序列化過程中需要特殊處理的類必須實現(xiàn)具有這些確切簽名的特殊方法:
private void readObject(java.io.ObjectInputStream stream)
throws IOException, ClassNotFoundException;
private void writeObject(java.io.ObjectOutputStream stream)
throws IOException
private void readObjectNoData()
throws ObjectStreamException;
writeObject 方法負責為其特定類寫入對象的狀態(tài),以便相應的 readObject 方法可以恢復它。該方法不需要關注屬于對象的超類或子類的狀態(tài)。通過使用 writeObject 方法或使用 DataOutput 支持的原始數(shù)據(jù)類型的方法將各個字段寫入 ObjectOutputStream 來保存狀態(tài)。
序列化不會寫出任何未實現(xiàn) java.io.Serializable 接口的對象的字段。不可序列化的對象的子類可以是可序列化的。在這種情況下,不可序列化的類必須有一個無參數(shù)的構造函數(shù)來允許其字段被初始化。在這種情況下,子類負責保存和恢復不可序列化類的狀態(tài)。通常情況下,該類的字段是可訪問的(公共的、包的或受保護的),或者存在可用于恢復狀態(tài)的 get 和 set 方法。
可以通過實現(xiàn)拋出 NotSerializableException 的 writeObject 和 readObject 方法來防止對象的序列化。異常將被 ObjectOutputStream 捕獲并中止序列化過程。
實現(xiàn) Externalizable 接口允許對象完全控制對象序列化形式的內(nèi)容和格式。調(diào)用 Externalizable 接口的方法 writeExternal 和 readExternal 來保存和恢復對象狀態(tài)。當由一個類實現(xiàn)時,它們可以使用 ObjectOutput 和 ObjectInput 的所有方法寫入和讀取自己的狀態(tài)。對象負責處理發(fā)生的任何版本控制。
枚舉常量的序列化方式與普通的可序列化或可外部化對象不同。枚舉常量的序列化形式僅由其名稱組成;不傳輸常量的字段值。為了序列化枚舉常量,ObjectOutputStream 寫入常量的 name 方法返回的字符串。與其他可序列化或可外部化的對象一樣,枚舉常量可以充當隨后出現(xiàn)在序列化流中的反向引用的目標。無法自定義枚舉常量序列化的過程;在序列化過程中,枚舉類型定義的任何類特定的 writeObject 和 writeReplace 方法都會被忽略。同樣,任何 serialPersistentFields 或 serialVersionUID 字段聲明也將被忽略——所有枚舉類型都有一個固定的 serialVersionUID 為 0L。
原始數(shù)據(jù)(不包括可序列化字段和可外部化數(shù)據(jù))以塊數(shù)據(jù)記錄的形式寫入 ObjectOutputStream。塊數(shù)據(jù)記錄由標題和數(shù)據(jù)組成。塊數(shù)據(jù)頭由一個標記和跟隨頭的字節(jié)數(shù)組成。連續(xù)的原始數(shù)據(jù)寫入合并到一個塊數(shù)據(jù)記錄中。用于塊數(shù)據(jù)記錄的阻塞因子為 1024 字節(jié)。每個塊數(shù)據(jù)記錄將被填充到 1024 字節(jié),或者在塊數(shù)據(jù)模式終止時寫入。對 ObjectOutputStream 方法 writeObject、defaultWriteObject 和 writeFields 的調(diào)用最初會終止任何現(xiàn)有的塊數(shù)據(jù)記錄。
Since:
JDK1.1
修飾符和類型 | 類 | 描述 |
---|---|---|
static class | ObjectOutputStream.PutField | 提供對要寫入 ObjectOutput 的持久字段的編程訪問。 |
從接口 java.io.ObjectStreamConstants 繼承的字段 |
---|
baseWireHandle, PROTOCOL_VERSION_1, PROTOCOL_VERSION_2, SC_BLOCK_DATA, SC_ENUM, SC_EXTERNALIZABLE, SC_SERIALIZABLE, SC_WRITE_METHOD, STREAM_MAGIC, STREAM_VERSION, SUBCLASS_IMPLEMENTATION_PERMISSION, SUBSTITUTION_PERMISSION, TC_ARRAY, TC_BASE, TC_BLOCKDATA, TC_BLOCKDATALONG, TC_CLASS, TC_CLASSDESC, TC_ENDBLOCKDATA, TC_ENUM, TC_EXCEPTION, TC_LONGSTRING, TC_MAX, TC_NULL, TC_OBJECT, TC_PROXYCLASSDESC, TC_REFERENCE, TC_RESET, TC_STRING |
修飾符 | 構造函數(shù) | 描述 |
---|---|---|
protected | ObjectOutputStream() | 為完全重新實現(xiàn) ObjectOutputStream 的子類提供一種方法,使其不必分配剛剛由 ObjectOutputStream 的實現(xiàn)使用的私有數(shù)據(jù)。 |
ObjectOutputStream(OutputStream out) | 創(chuàng)建一個寫入指定 OutputStream 的 ObjectOutputStream。 |
修飾符和類型 | 方法 | 描述 |
---|---|---|
protected void | annotateClass(Class<?> cl) | 子類可以實現(xiàn)此方法以允許將類數(shù)據(jù)存儲在流中。 |
protected void | annotateProxyClass(Class<?> cl) | 子類可以實現(xiàn)此方法以將自定義數(shù)據(jù)與動態(tài)代理類的描述符一起存儲在流中。 |
void | close() | 關閉流。 |
void | defaultWriteObject() | 將當前類的非靜態(tài)和非瞬態(tài)字段寫入此流。 |
protected void | drain() | 排出 ObjectOutputStream 中的所有緩沖數(shù)據(jù)。 |
protected boolean | enableReplaceObject(boolean enable) | 使流能夠替換流中的對象。 |
void | flush() | 沖洗流。 |
ObjectOutputStream.PutField | putFields() | 檢索用于緩沖要寫入流的持久字段的對象。 |
protected Object | replaceObject(Object obj) | 此方法將允許 ObjectOutputStream 的受信任子類在序列化期間用一個對象替換另一個對象。 |
void | reset() | 重置將忽略已寫入流的任何對象的狀態(tài)。 |
void | useProtocolVersion(int version) | 指定寫入流時要使用的流協(xié)議版本。 |
void | write(byte[] buf) | 寫入一個字節(jié)數(shù)組。 |
void | write(byte[] buf, int off, int len) | 寫入一個子字節(jié)數(shù)組。 |
void | write(int val) | 寫入一個字節(jié)。 |
void | writeBoolean(boolean val) | 寫入一個布爾值。 |
void | writeByte(int val) | 寫入一個 8 位字節(jié)。 |
void | writeBytes(String str) | 將 String 作為字節(jié)序列寫入。 |
void | writeChar(int val) | 寫入一個 16 位字符。 |
void | writeChars(String str) | 將字符串寫入字符序列。 |
protected void | writeClassDescriptor(ObjectStreamClass desc) | 將指定的類描述符寫入 ObjectOutputStream。 |
void | writeDouble(double val) | 寫入 64 位雙精度。 |
void | writeFields() | 將緩沖字段寫入流。 |
void | writeFloat(float val) | 寫入一個 32 位浮點數(shù)。 |
void | writeInt(int val) | 寫入一個 32 位整數(shù)。 |
void | writeLong(long val) | 寫入 64 位長。 |
void | writeObject(Object obj) | 將指定對象寫入 ObjectOutputStream。 |
protected void | writeObjectOverride(Object obj) | 子類用來覆蓋默認 writeObject 方法的方法。 |
void | writeShort(int val) | 寫入 16 位短。 |
protected void | writeStreamHeader() | 提供了 writeStreamHeader 方法,因此子類可以將自己的標頭附加或前置到流中。 |
void | writeUnshared(Object obj) | 將“非共享”對象寫入 ObjectOutputStream。 |
void | writeUTF(String str) | 以修改后的 UTF-8 格式寫入此字符串的原始數(shù)據(jù)。 |
從類 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
public ObjectOutputStream(OutputStream out) throws IOException
創(chuàng)建一個寫入指定 OutputStream 的 ObjectOutputStream。 此構造函數(shù)將序列化流標頭寫入底層流; 調(diào)用者可能希望立即刷新流,以確保接收 ObjectInputStreams 的構造函數(shù)在讀取標頭時不會阻塞。
如果安裝了安全管理器,則此構造函數(shù)將在由覆蓋 ObjectOutputStream.putFields 或 ObjectOutputStream.writeUnshared 方法的子類的構造函數(shù)直接或間接調(diào)用時檢查“enableSubclassImplementation”SerializablePermission。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
out | 要寫入的輸出流 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果在寫入流標頭時發(fā)生 I/O 錯誤 |
SecurityException | 如果不受信任的子類非法覆蓋安全敏感方法 |
NullPointerException | 如果 out 為空 |
Since:
1.4
protected ObjectOutputStream() throws IOException, SecurityException
為完全重新實現(xiàn) ObjectOutputStream 的子類提供一種方法,使其不必分配剛剛由 ObjectOutputStream 的實現(xiàn)使用的私有數(shù)據(jù)。
如果安裝了安全管理器,此方法首先調(diào)用安全管理器的 checkPermission 方法,并帶有 SerializablePermission("enableSubclassImplementation") 權限,以確??梢詥⒂米宇惢?。
Throws:
Throw名稱 | Throw描述 |
---|---|
SecurityException | 如果存在安全管理器并且其 checkPermission 方法拒絕啟用子類化。 |
IOException | 如果在創(chuàng)建此流時發(fā)生 I/O 錯誤 |
public void useProtocolVersion(int version) throws IOException
指定寫入流時要使用的流協(xié)議版本。
此例程提供了一個掛鉤,使當前版本的序列化能夠以向后兼容的流格式的先前版本的格式寫入。
將盡一切努力避免引入額外的向后不兼容; 但是,有時沒有其他選擇。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
version | 使用來自 java.io.ObjectStreamConstants 的 ProtocolVersion。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalStateException | 如果在任何對象被序列化后調(diào)用。 |
IllegalArgumentException | 如果傳入無效版本。 |
IOException | 如果發(fā)生 I/O 錯誤 |
Since:
1.2
public final void writeObject(Object obj) throws IOException
將指定對象寫入 ObjectOutputStream。 寫入對象的類、類的簽名、類的非瞬態(tài)和非靜態(tài)字段的值及其所有超類型。 可以使用 writeObject 和 readObject 方法覆蓋類的默認序列化。 此對象引用的對象是可傳遞寫入的,因此可以通過 ObjectInputStream 重建對象的完整等效圖。
對于 OutputStream 的問題和不應序列化的類,將引發(fā)異常。 所有異常對于 OutputStream 來說都是致命的,它處于不確定狀態(tài),由調(diào)用者來忽略或恢復流狀態(tài)。
指定者:
接口 ObjectOutput 中的 writeObject
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
obj | 要寫入的對象 |
Throws:
Throw名稱 | Throw描述 |
---|---|
InvalidClassException | 序列化使用的類有問題。 |
NotSerializableException | 某些要序列化的對象沒有實現(xiàn) java.io.Serializable 接口。 |
IOException | 底層 OutputStream 引發(fā)的任何異常。 |
protected void writeObjectOverride(Object obj) throws IOException
子類用來覆蓋默認 writeObject 方法的方法。 此方法由使用受保護的無參數(shù)構造函數(shù)構造 ObjectInputStream 的 ObjectInputStream 的受信任子類調(diào)用。 子類應提供帶有修飾符“final”的覆蓋方法。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
obj | 要寫入底層流的對象 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果在寫入底層流時出現(xiàn) I/O 錯誤 |
Since:
1.2
public void writeUnshared(Object obj) throws IOException
將“非共享”對象寫入 ObjectOutputStream。 此方法與 writeObject 相同,不同之處在于它始終將給定對象作為流中新的唯一對象寫入(與指向先前序列化實例的反向引用相反)。 具體來說:
雖然通過 writeUnshared 寫入對象本身并不能保證在反序列化時對該對象的唯一引用,但它允許在流中多次定義單個對象,因此接收方對 readUnshared 的多次調(diào)用不會發(fā)生沖突。 請注意,上述規(guī)則僅適用于使用 writeUnshared 編寫的基礎級對象,不適用于要序列化的對象圖中的任何可傳遞引用的子對象。
覆蓋此方法的 ObjectOutputStream 子類只能在擁有“enableSubclassImplementation”SerializablePermission 的安全上下文中構造; 任何嘗試在沒有此權限的情況下實例化此類子類都將導致拋出 SecurityException。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
obj | 要寫入流的對象 |
Throws:
Throw名稱 | Throw沒事 |
---|---|
NotSerializableException | 如果圖中要序列化的對象沒有實現(xiàn) Serializable 接口 |
InvalidClassException | 如果要序列化的對象的類存在問題 |
IOException | 如果在序列化過程中發(fā)生 I/O 錯誤 |
Since:
1.4
public void defaultWriteObject() throws IOException
將當前類的非靜態(tài)和非瞬態(tài)字段寫入此流。 這只能從被序列化的類的 writeObject 方法中調(diào)用。 如果以其他方式調(diào)用它將拋出 NotActiveException。
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果在寫入底層 OutputStream 時發(fā)生 I/O 錯誤 |
public ObjectOutputStream.PutField putFields() throws IOException
檢索用于緩沖要寫入流的持久字段的對象。 當調(diào)用 writeFields 方法時,字段將被寫入流。
返回:
包含可序列化字段的 Putfield 類的實例
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果發(fā)生 I/O 錯誤 |
Since:
1.2
public void writeFields() throws IOException
將緩沖字段寫入流。
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果在寫入底層流時發(fā)生 I/O 錯誤 |
NotActiveException | 當未調(diào)用類 writeObject 方法來寫入對象的狀態(tài)時調(diào)用。 |
Since:
1.2
public void reset() throws IOException
重置將忽略已寫入流的任何對象的狀態(tài)。 狀態(tài)被重置為與新的 ObjectOutputStream 相同。 流中的當前點被標記為重置,因此相應的 ObjectInputStream 將在同一點重置。 之前寫入流的對象不會被稱為已經(jīng)在流中。 它們將再次寫入流。
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果在序列化對象時調(diào)用了 reset()。 |
protected void annotateClass(Class<?> cl) throws IOException
子類可以實現(xiàn)此方法以允許將類數(shù)據(jù)存儲在流中。 默認情況下,此方法不執(zhí)行任何操作。 ObjectInputStream 中對應的方法是resolveClass。 對于流中的每個唯一類,該方法只調(diào)用一次。 類名和簽名將已寫入流。 此方法可以免費使用 ObjectOutputStream 來保存它認為合適的類的任何表示(例如,類文件的字節(jié))。 ObjectInputStream 對應子類中的resolveClass 方法必須讀取和使用annotateClass 寫入的任何數(shù)據(jù)或?qū)ο蟆?/p>
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
cl | 注釋自定義數(shù)據(jù)的類 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 底層 OutputStream 引發(fā)的任何異常。 |
protected void annotateProxyClass(Class<?> cl) throws IOException
子類可以實現(xiàn)此方法以將自定義數(shù)據(jù)與動態(tài)代理類的描述符一起存儲在流中。
對于流中的每個唯一代理類描述符,該方法只調(diào)用一次。 ObjectOutputStream 中此方法的默認實現(xiàn)不執(zhí)行任何操作。
ObjectInputStream 中對應的方法是resolveProxyClass。 對于覆蓋此方法的給定 ObjectOutputStream 子類,ObjectInputStream 對應子類中的 resolveProxyClass 方法必須讀取 annotateProxyClass 寫入的任何數(shù)據(jù)或?qū)ο蟆?/p>
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
cl | 用于注釋自定義數(shù)據(jù)的代理類 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 底層 OutputStream 拋出的任何異常 |
Since:
1.3
protected Object replaceObject(Object obj) throws IOException
此方法將允許 ObjectOutputStream 的受信任子類在序列化期間用一個對象替換另一個對象。在調(diào)用 enableReplaceObject 之前,禁用替換對象。 enableReplaceObject 方法檢查請求進行替換的流是否可信。寫入序列化流的每個對象的第一次出現(xiàn)被傳遞給replaceObject。對該對象的后續(xù)引用被替換為原始調(diào)用replaceObject 返回的對象。為了確保對象的私有狀態(tài)不會被無意暴露,只有受信任的流可以使用 replaceObject。
ObjectOutputStream.writeObject 方法采用 Object 類型(與 Serializable 類型相反)的參數(shù),以允許將不可序列化對象替換為可序列化對象的情況。
當子類替換對象時,它必須確保在反序列化期間必須進行補充替換,或者確保替換的對象與將存儲引用的每個字段兼容。類型不是字段或數(shù)組元素類型的子類的對象通過引發(fā)異常中止序列化并且不存儲該對象。
此方法僅在第一次遇到每個對象時調(diào)用一次。對該對象的所有后續(xù)引用都將重定向到新對象。此方法應返回要替換的對象或原始對象。
Null 可以作為要替換的對象返回,但可能會在包含對原始對象的引用的類中導致 NullReferenceException,因為它們可能期望一個對象而不是 null。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
obj | 被替換的對象 |
返回:
替換指定對象的替代對象
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 底層 OutputStream 引發(fā)的任何異常。 |
protected boolean enableReplaceObject(boolean enable) throws SecurityException
使流能夠替換流中的對象。 啟用后,將為每個正在序列化的對象調(diào)用 replaceObject 方法。
如果 enable 為 true,并且安裝了安全管理器,此方法首先調(diào)用安全管理器的 checkPermission 方法,并具有 SerializablePermission("enableSubstitution") 權限,以確保可以啟用流來替換流中的對象。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
enable | 用于啟用對象替換的布爾參數(shù) |
返回:
調(diào)用此方法之前的先前設置
Throws:
Throw名稱 | Throw描述 |
---|---|
SecurityException | 如果存在安全管理器并且其 checkPermission 方法拒絕啟用流來替換流中的對象。 |
protected void writeStreamHeader() throws IOException
提供了 writeStreamHeader 方法,因此子類可以將自己的標頭附加或前置到流中。 它將幻數(shù)和版本寫入流。
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果在寫入底層流時發(fā)生 I/O 錯誤 |
protected void writeClassDescriptor(ObjectStreamClass desc) throws IOException
將指定的類描述符寫入 ObjectOutputStream。 類描述符用于標識寫入流的對象的類。 ObjectOutputStream 的子類可以重寫此方法以自定義將類描述符寫入序列化流的方式。 然后應該重寫 ObjectInputStream 中的相應方法 readClassDescriptor 以從其自定義流表示中重構類描述符。 默認情況下,此方法根據(jù)對象序列化規(guī)范中定義的格式寫入類描述符。
請注意,僅當 ObjectOutputStream 未使用舊的序列化流格式(通過調(diào)用 ObjectOutputStream 的 useProtocolVersion 方法設置)時才會調(diào)用此方法。 如果此序列化流使用舊格式 (PROTOCOL_VERSION_1),則類描述符將以無法覆蓋或自定義的方式在內(nèi)部寫入。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
desc | 寫入流的類描述符 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果發(fā)生 I/O 錯誤。 |
Since:
1.3
public void write(int val) throws IOException
寫入一個字節(jié)。 此方法將阻塞,直到實際寫入字節(jié)。
指定者:
寫入接口DataOutput
指定者:
寫入接口ObjectOutput
指定者:
寫在類 OutputStream
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
val | 要寫入流的字節(jié) |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果發(fā)生 I/O 錯誤。 |
public void write(byte[] buf) throws IOException
寫入一個字節(jié)數(shù)組。 此方法將阻塞,直到實際寫入字節(jié)。
指定者:
寫入接口DataOutput
指定者:
寫入接口ObjectOutput
覆蓋:
寫在類 OutputStream
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
buf | 要寫入的數(shù)據(jù) |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果發(fā)生 I/O 錯誤。 |
public void write(byte[] buf, int off, int len) throws IOException
寫入一個子字節(jié)數(shù)組。
指定者:
寫入接口DataOutput
指定者:
寫入接口ObjectOutput
覆蓋:
寫在類 OutputStream
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
buf | 要寫入的數(shù)據(jù) |
off | 數(shù)據(jù)中的起始偏移量 |
len | 寫入的字節(jié)數(shù) |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果發(fā)生 I/O 錯誤。 |
public void flush() throws IOException
沖洗流。 這將寫入任何緩沖的輸出字節(jié)并刷新到底層流。
指定者:
在接口 Flushable 中刷新
指定者:
在接口 ObjectOutput 中刷新
覆蓋:
類 OutputStream 中的刷新
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果發(fā)生 I/O 錯誤。 |
protected void drain() throws IOException
排出 ObjectOutputStream 中的所有緩沖數(shù)據(jù)。 與刷新類似,但不會將刷新傳播到底層流。
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果在寫入底層流時發(fā)生 I/O 錯誤 |
public void close() throws IOException
關閉流。 必須調(diào)用此方法來釋放與流關聯(lián)的任何資源。
指定者:
在接口 AutoCloseable 中關閉
指定者:
在接口Closeable中關閉
指定者:
在接口 ObjectOutput 中關閉
覆蓋:
在類 OutputStream 中關閉
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果發(fā)生 I/O 錯誤。 |
public void writeBoolean(boolean val) throws IOException
寫入一個布爾值。
指定者:
接口 DataOutput 中的 writeBoolean
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
val | 要寫入的布爾值 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果在寫入底層流時發(fā)生 I/O 錯誤 |
public void writeByte(int val) throws IOException
寫入一個 8 位字節(jié)。
指定者:
接口 DataOutput 中的 writeByte
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
val | 要寫入的字節(jié)值 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果在寫入底層流時發(fā)生 I/O 錯誤 |
public void writeShort(int val) throws IOException
寫入 16 位短。
指定者:
接口 DataOutput 中的 writeShort
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
val | 要寫入的短值 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果在寫入底層流時發(fā)生 I/O 錯誤 |
public void writeChar(int val) throws IOException
寫入一個 16 位字符。
指定者:
接口 DataOutput 中的 writeChar
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
val | 要寫入的 char 值 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果在寫入底層流時發(fā)生 I/O 錯誤 |
public void writeInt(int val) throws IOException
寫入一個 32 位整數(shù)。
指定者:
接口 DataOutput 中的 writeInt
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
val | 要寫入的整數(shù)值 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果在寫入底層流時發(fā)生 I/O 錯誤 |
public void writeLong(long val) throws IOException
寫入 64 位長。
指定者:
接口 DataOutput 中的 writeLong
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
val | 要寫入的長值 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果在寫入底層流時發(fā)生 I/O 錯誤 |
public void writeFloat(float val) throws IOException
寫入一個 32 位浮點數(shù)。
指定者:
接口 DataOutput 中的 writeFloat
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
val | 要寫入的浮點值 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果在寫入底層流時發(fā)生 I/O 錯誤 |
public void writeDouble(double val) throws IOException
寫入 64 位雙精度。
指定者:
接口 DataOutput 中的 writeDouble
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
val | 要寫入的雙精度值 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果在寫入底層流時發(fā)生 I/O 錯誤 |
public void writeBytes(String str) throws IOException
將 String 作為字節(jié)序列寫入。
指定者:
接口 DataOutput 中的 writeBytes
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
str | 要寫入的字節(jié)字符串 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果在寫入底層流時發(fā)生 I/O 錯誤 |
public void writeChars(String str) throws IOException
將字符串寫入字符序列。
指定者:
接口 DataOutput 中的 writeChars
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
str | 要寫入的字符串 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果在寫入底層流時發(fā)生 I/O 錯誤 |
public void writeUTF(String str) throws IOException
以修改后的 UTF-8 格式寫入此字符串的原始數(shù)據(jù)。 請注意,將字符串作為原始數(shù)據(jù)或作為對象寫入流中存在顯著差異。 writeObject 寫入的 String 實例最初作為 String 寫入流中。 未來的 writeObject() 調(diào)用將字符串的引用寫入流中。
指定者:
接口 DataOutput 中的 writeUTF
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
str | 要寫入的字符串 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果在寫入底層流時發(fā)生 I/O 錯誤 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: