鴻蒙OS ObjectOutputStream

2022-10-21 16:38 更新

ObjectOutputStream

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ù)摘要

修飾符 構造函數(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

構造函數(shù)詳細信息

ObjectOutputStream

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

ObjectOutputStream

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 錯誤

方法詳情

useProtocolVersion

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

writeObject

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ā)的任何異常。

writeObjectOverride

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

writeUnshared

public void writeUnshared(Object obj) throws IOException

將“非共享”對象寫入 ObjectOutputStream。 此方法與 writeObject 相同,不同之處在于它始終將給定對象作為流中新的唯一對象寫入(與指向先前序列化實例的反向引用相反)。 具體來說:

  • 通過 writeUnshared 寫入的對象始終以與新出現(xiàn)的對象(尚未寫入流的對象)相同的方式序列化,無論該對象之前是否已寫入。
  • 如果 writeObject 用于寫入先前已使用 writeUnshared 寫入的對象,則將先前的 writeUnshared 操作視為單獨對象的寫入。 換句話說,ObjectOutputStream 永遠不會生成對通過調(diào)用 writeUnshared 寫入的對象數(shù)據(jù)的反向引用。

雖然通過 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

defaultWriteObject

public void defaultWriteObject() throws IOException

將當前類的非靜態(tài)和非瞬態(tài)字段寫入此流。 這只能從被序列化的類的 writeObject 方法中調(diào)用。 如果以其他方式調(diào)用它將拋出 NotActiveException。

Throws:

Throw名稱 Throw描述
IOException 如果在寫入底層 OutputStream 時發(fā)生 I/O 錯誤

putFields

public ObjectOutputStream.PutField putFields() throws IOException

檢索用于緩沖要寫入流的持久字段的對象。 當調(diào)用 writeFields 方法時,字段將被寫入流。

返回:

包含可序列化字段的 Putfield 類的實例

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯誤

Since:

1.2

writeFields

public void writeFields() throws IOException

將緩沖字段寫入流。

Throws:

Throw名稱 Throw描述
IOException 如果在寫入底層流時發(fā)生 I/O 錯誤
NotActiveException 當未調(diào)用類 writeObject 方法來寫入對象的狀態(tài)時調(diào)用。

Since:

1.2

reset

public void reset() throws IOException

重置將忽略已寫入流的任何對象的狀態(tài)。 狀態(tài)被重置為與新的 ObjectOutputStream 相同。 流中的當前點被標記為重置,因此相應的 ObjectInputStream 將在同一點重置。 之前寫入流的對象不會被稱為已經(jīng)在流中。 它們將再次寫入流。

Throws:

Throw名稱 Throw描述
IOException 如果在序列化對象時調(diào)用了 reset()。

annotateClass

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ā)的任何異常。

annotateProxyClass

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

replaceObject

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ā)的任何異常。

enableReplaceObject

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 方法拒絕啟用流來替換流中的對象。

writeStreamHeader

protected void writeStreamHeader() throws IOException

提供了 writeStreamHeader 方法,因此子類可以將自己的標頭附加或前置到流中。 它將幻數(shù)和版本寫入流。

Throws:

Throw名稱 Throw描述
IOException 如果在寫入底層流時發(fā)生 I/O 錯誤

writeClassDescriptor

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

write

public void write(int val) throws IOException

寫入一個字節(jié)。 此方法將阻塞,直到實際寫入字節(jié)。

指定者:

寫入接口DataOutput

指定者:

寫入接口ObjectOutput

指定者:

寫在類 OutputStream

參數(shù):

參數(shù)名稱 參數(shù)描述
val 要寫入流的字節(jié)

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯誤。

write

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 錯誤。

write

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 錯誤。

flush

public void flush() throws IOException

沖洗流。 這將寫入任何緩沖的輸出字節(jié)并刷新到底層流。

指定者:

在接口 Flushable 中刷新

指定者:

在接口 ObjectOutput 中刷新

覆蓋:

類 OutputStream 中的刷新

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯誤。

drain

protected void drain() throws IOException

排出 ObjectOutputStream 中的所有緩沖數(shù)據(jù)。 與刷新類似,但不會將刷新傳播到底層流。

Throws:

Throw名稱 Throw描述
IOException 如果在寫入底層流時發(fā)生 I/O 錯誤

close

public void close() throws IOException

關閉流。 必須調(diào)用此方法來釋放與流關聯(lián)的任何資源。

指定者:

在接口 AutoCloseable 中關閉

指定者:

在接口Closeable中關閉

指定者:

在接口 ObjectOutput 中關閉

覆蓋:

在類 OutputStream 中關閉

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯誤。

writeBoolean

public void writeBoolean(boolean val) throws IOException

寫入一個布爾值。

指定者:

接口 DataOutput 中的 writeBoolean

參數(shù):

參數(shù)名稱 參數(shù)描述
val 要寫入的布爾值

Throws:

Throw名稱 Throw描述
IOException 如果在寫入底層流時發(fā)生 I/O 錯誤

writeByte

public void writeByte(int val) throws IOException

寫入一個 8 位字節(jié)。

指定者:

接口 DataOutput 中的 writeByte

參數(shù):

參數(shù)名稱 參數(shù)描述
val 要寫入的字節(jié)值

Throws:

Throw名稱 Throw描述
IOException 如果在寫入底層流時發(fā)生 I/O 錯誤

writeShort

public void writeShort(int val) throws IOException

寫入 16 位短。

指定者:

接口 DataOutput 中的 writeShort

參數(shù):

參數(shù)名稱 參數(shù)描述
val 要寫入的短值

Throws:

Throw名稱 Throw描述
IOException 如果在寫入底層流時發(fā)生 I/O 錯誤

writeChar

public void writeChar(int val) throws IOException

寫入一個 16 位字符。

指定者:

接口 DataOutput 中的 writeChar

參數(shù):

參數(shù)名稱 參數(shù)描述
val 要寫入的 char 值

Throws:

Throw名稱 Throw描述
IOException 如果在寫入底層流時發(fā)生 I/O 錯誤

writeInt

public void writeInt(int val) throws IOException

寫入一個 32 位整數(shù)。

指定者:

接口 DataOutput 中的 writeInt

參數(shù):

參數(shù)名稱 參數(shù)描述
val 要寫入的整數(shù)值

Throws:

Throw名稱 Throw描述
IOException 如果在寫入底層流時發(fā)生 I/O 錯誤

writeLong

public void writeLong(long val) throws IOException

寫入 64 位長。

指定者:

接口 DataOutput 中的 writeLong

參數(shù):

參數(shù)名稱 參數(shù)描述
val 要寫入的長值

Throws:

Throw名稱 Throw描述
IOException 如果在寫入底層流時發(fā)生 I/O 錯誤

writeFloat

public void writeFloat(float val) throws IOException

寫入一個 32 位浮點數(shù)。

指定者:

接口 DataOutput 中的 writeFloat

參數(shù):

參數(shù)名稱 參數(shù)描述
val 要寫入的浮點值

Throws:

Throw名稱 Throw描述
IOException 如果在寫入底層流時發(fā)生 I/O 錯誤

writeDouble

public void writeDouble(double val) throws IOException

寫入 64 位雙精度。

指定者:

接口 DataOutput 中的 writeDouble

參數(shù):

參數(shù)名稱 參數(shù)描述
val 要寫入的雙精度值

Throws:

Throw名稱 Throw描述
IOException 如果在寫入底層流時發(fā)生 I/O 錯誤

writeBytes

public void writeBytes(String str) throws IOException

將 String 作為字節(jié)序列寫入。

指定者:

接口 DataOutput 中的 writeBytes

參數(shù):

參數(shù)名稱 參數(shù)描述
str 要寫入的字節(jié)字符串

Throws:

Throw名稱 Throw描述
IOException 如果在寫入底層流時發(fā)生 I/O 錯誤

writeChars

public void writeChars(String str) throws IOException

將字符串寫入字符序列。

指定者:

接口 DataOutput 中的 writeChars

參數(shù):

參數(shù)名稱 參數(shù)描述
str 要寫入的字符串

Throws:

Throw名稱 Throw描述
IOException 如果在寫入底層流時發(fā)生 I/O 錯誤

writeUTF

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 錯誤
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號