共用方式為


ObjectOutputStream 類別

定義

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

[Android.Runtime.Register("java/io/ObjectOutputStream", DoNotGenerateAcw=true)]
public class ObjectOutputStream : Java.IO.OutputStream, IDisposable, Java.Interop.IJavaPeerable, Java.IO.IObjectOutput
[<Android.Runtime.Register("java/io/ObjectOutputStream", DoNotGenerateAcw=true)>]
type ObjectOutputStream = class
    inherit OutputStream
    interface IObjectOutput
    interface IDataOutput
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
繼承
ObjectOutputStream
屬性
實作

備註

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。 您可以使用 ObjectInputStream 來讀取物件(重新建構)。 您可以使用資料流的檔案來完成物件的永續性儲存。 如果數據流是網路套接字數據流,物件可以在另一部主機或另一個進程中重新建構。

只有支援 java.io.Serializable 介面的物件可以寫入數據流。 每個可串行化對象的類別都會編碼,包括 類別的類別名稱和簽章、物件的欄位和數位的值,以及從初始物件參考的任何其他物件關閉。

writeObject 方法可用來將物件寫入數據流。 任何物件,包括 Strings 和數位,都是使用 writeObject 撰寫。 多個物件或基本類型可以寫入數據流。 對象必須從具有相同型別的對應 ObjectInputstream 讀取回,而且順序與寫入的順序相同。

基本數據類型也可以使用 DataOutput 的適當方法寫入數據流。 字串也可以使用 writeUTF 方法撰寫。

對象的預設串行化機制會寫入物件的類別、類別簽章,以及所有非暫時性和非靜態字段的值。 其他對象的參考(在暫時性或靜態字段中除外),也會寫入這些物件。 單一物件的多個參考會使用參考共用機制進行編碼,以便將物件的圖形還原到與寫入原始圖形相同的圖形。

例如,若要撰寫物件,該物件可由 ObjectInputStream 中的範例讀取: <br>

FileOutputStream fos = new FileOutputStream("t.tmp");
                 ObjectOutputStream oos = new ObjectOutputStream(fos);

                 oos.writeInt(12345);
                 oos.writeObject("Today");
                 oos.writeObject(new Date());

                 oos.close();

在串行化和還原串行化程序期間需要特殊處理的類別必須實作具有這些確切簽章的特殊方法: <br>

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 方法負責為其特定類別寫入物件的狀態,以便對應的 readObject 方法可以還原它。 方法不需要關注屬於物件超類別或子類別的狀態。 狀態是使用 writeObject 方法將個別欄位寫入 ObjectOutputStream,或使用 DataOutput 所支援之基本數據類型的方法來儲存狀態。

串行化不會寫出任何未實作 java.io.Serializable 介面之物件的欄位。 無法串行化之物件的子類別可以串行化。 在此情況下,不可串行化的類別必須有 no-arg 建構函式,才能將其字段初始化。 在此情況下,子類別負責儲存和還原不可串行化類別的狀態。 通常,該類別的欄位是可存取的(公用、封裝或受保護),或是有可用來還原狀態的 get 和 set 方法。

藉由實作會擲回 NotSerializableException 的 writeObject 和 readObject 方法,即可防止物件的串行化。 ObjectOutputStream 會攔截例外狀況,並中止串行化程式。

實作 Externalizable 介面可讓物件對物件串行化表單的內容和格式進行完整控制。 呼叫 Externalizable 介面 writeExternal 和 readExternal 的方法,以儲存和還原對象狀態。 當類別實作時,他們可以使用 ObjectOutput 和 ObjectInput 的所有方法來寫入和讀取自己的狀態。 對象負責處理所發生的任何版本控制。

列舉常數的串行化方式與一般可串行化或外部化物件不同。 列舉常數的串行化形式只包含其名稱;不會傳輸常數的域值。 若要串行化列舉常數,ObjectOutputStream 會寫入常數名稱方法所傳回的字串。 與其他可串行化或可外部化對象一樣,列舉常數可以當做後續出現在串行化數據流中的反向參考目標。 無法自定義列舉常數串行化的進程;串行化期間會忽略列舉類型所定義的任何類別特定 writeObject 和 writeReplace 方法。 同樣地,也會忽略任何 serialPersistentFields 或 serialVersionUID 欄位宣告--所有列舉類型都有固定的 serialVersionUID 為 0L。

基本數據,不包括可串行化的字段和可外部化的數據,會寫入區塊數據記錄中的 ObjectOutputStream。 區塊數據記錄是由標頭和數據所組成。 區塊數據標頭包含標記和要追蹤標頭的位元組數目。 連續的基本數據寫入會合併成一個區塊數據記錄。 用於區塊數據記錄的封鎖因數會是 1024 個字節。 每個區塊數據記錄都會填滿最多 1024 個字節,或在區塊數據模式終止時寫入。 呼叫 ObjectOutputStream 方法 writeObject、defaultWriteObject 和 writeFields 一開始會終止任何現有的區塊數據記錄。

已在 JDK1.1 中新增。

java.io.ObjectOutputStreamJava 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

建構函式

ObjectOutputStream()

為完全重新實作 ObjectOutputStream 的子類別提供一種方式,而不需要配置這個 ObjectOutputStream 實作所使用的私用數據。

ObjectOutputStream(IntPtr, JniHandleOwnership)

建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。

ObjectOutputStream(Stream)

建立寫入指定 OutputStream 的 ObjectOutputStream。

屬性

Class

傳回這個 Object的運行時間類別。

(繼承來源 Object)
Handle

基礎Android實例的句柄。

(繼承來源 Object)
JniIdentityHashCode

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

(繼承來源 Object)
JniPeerMembers

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

PeerReference

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

(繼承來源 Object)
ThresholdClass

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

ThresholdType

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

方法

AnnotateClass(Class)

子類別可以實作這個方法,以允許類別數據儲存在數據流中。

AnnotateProxyClass(Class)

子類別可以實作這個方法,將自定義數據儲存在數據流中,以及動態 Proxy 類別的描述項。

Clone()

建立並傳回這個 對象的複本。

(繼承來源 Object)
Close()

關閉此輸出數據流,並釋放與此數據流相關聯的任何系統資源。

(繼承來源 OutputStream)
DefaultWriteObject()

將目前類別的非靜態和非暫時性欄位寫入此數據流。

Dispose()

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

(繼承來源 Object)
Dispose(Boolean)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

(繼承來源 Object)
Drain()

清空 ObjectOutputStream 中的任何緩衝數據。

EnableReplaceObject(Boolean)

啟用數據流以取代數據流中的物件。

Equals(Object)

指出其他物件是否「等於」這個物件。

(繼承來源 Object)
Flush()

排清此輸出數據流,並強制寫出任何緩衝的輸出位元組。

(繼承來源 OutputStream)
GetHashCode()

傳回此物件的雜湊碼值。

(繼承來源 Object)
JavaFinalize()

當垃圾收集決定不再參考物件時,垃圾收集行程在 物件上呼叫。

(繼承來源 Object)
Notify()

喚醒正在等候此物件監視器的單一線程。

(繼承來源 Object)
NotifyAll()

喚醒正在等候此物件監視器的所有線程。

(繼承來源 Object)
PutFields()

擷取用來緩衝寫入數據流之永續性字段的物件。

ReplaceObject(Object)

這個方法可讓 ObjectOutputStream 的受信任子類別在串行化期間將一個物件取代為另一個物件。

Reset()

重設會忽略任何已寫入數據流的對象狀態。

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
ToArray<T>()

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

(繼承來源 Object)
ToString()

傳回物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

(繼承來源 Object)
UseProtocolVersion(ObjectStreamProtocol)

指定寫入數據流時要使用的數據流通訊協定版本。

Wait()

讓目前線程等候直到喚醒為止,通常是藉由em <notified/em>或<em>interrupted</em> 來喚醒它。<>

(繼承來源 Object)
Wait(Int64)

讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。

(繼承來源 Object)
Wait(Int64, Int32)

讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。

(繼承來源 Object)
Write(Byte[])

b.length將位元組從指定的位元組數位組寫入這個輸出數據流。

(繼承來源 OutputStream)
Write(Byte[], Int32, Int32)

len從從位移off開始的指定位元組數位寫入這個輸出數據流的位元組。

(繼承來源 OutputStream)
Write(Int32)

寫入位元組。

WriteAsync(Byte[])

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

(繼承來源 OutputStream)
WriteAsync(Byte[], Int32, Int32)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

(繼承來源 OutputStream)
WriteAsync(Int32)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

(繼承來源 OutputStream)
WriteBoolean(Boolean)

寫入布爾值。

WriteByte(Int32)

寫入8位位元組。

WriteBytes(String)

將 String 寫入為位元組序列。

WriteChar(Int32)

寫入16位字元。

WriteChars(String)

將 String 寫入為字元序列。

WriteClassDescriptor(ObjectStreamClass)

將指定的類別描述元寫入 ObjectOutputStream。

WriteDouble(Double)

寫入64位雙精度浮點數。

WriteFields()

將緩衝欄位寫入數據流。

WriteFloat(Single)

寫入32位浮點數。

WriteInt(Int32)

寫入32位int。

WriteLong(Int64)

寫入64位長。

WriteObject(Object)

將指定的物件寫入 ObjectOutputStream。

WriteObjectOverride(Object)

子類別用來覆寫預設 writeObject 方法的方法。

WriteShort(Int32)

寫入16位短。

WriteStreamHeader()

提供 writeStreamHeader 方法,讓子類別可以將自己的標頭附加或前面至數據流。

WriteUnshared(Object)

將 「unshared」 物件寫入 ObjectOutputStream。

WriteUTF(String)

以修改過的 UTF-8 格式寫入此字串的基本數據。

明確介面實作

IJavaPeerable.Disposed()

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

(繼承來源 Object)
IJavaPeerable.DisposeUnlessReferenced()

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

(繼承來源 Object)
IJavaPeerable.Finalized()

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

(繼承來源 Object)
IJavaPeerable.JniManagedPeerState

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

(繼承來源 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

(繼承來源 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

(繼承來源 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

(繼承來源 Object)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

GetJniTypeName(IJavaPeerable)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

WriteAsync(IDataOutput, Byte[])

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

WriteAsync(IDataOutput, Byte[], Int32, Int32)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

WriteAsync(IDataOutput, Int32)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

WriteBooleanAsync(IDataOutput, Boolean)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

WriteByteAsync(IDataOutput, Int32)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

WriteBytesAsync(IDataOutput, String)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

WriteCharAsync(IDataOutput, Int32)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

WriteCharsAsync(IDataOutput, String)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

WriteDoubleAsync(IDataOutput, Double)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

WriteFloatAsync(IDataOutput, Single)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

WriteIntAsync(IDataOutput, Int32)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

WriteLongAsync(IDataOutput, Int64)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

WriteShortAsync(IDataOutput, Int32)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

WriteUTFAsync(IDataOutput, String)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

FlushAsync(IFlushable)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

FlushAsync(IObjectOutput)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

WriteObjectAsync(IObjectOutput, Object)

ObjectOutputStream 會將 Java 物件的基本數據類型和圖形寫入 OutputStream。

適用於