Share via


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 方法,或使用 DataOutput 所支援之基本資料類型的方法,將個別欄位寫入 ObjectOutputStream 儲存。

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

藉由實作擲回 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.ObjectOutputStream JAVA 檔。

此頁面的部分是根據所建立和共用的工作進行修改,並根據 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 支援 Mono for Android 基礎結構,並不適合直接從您的程式碼使用。

ThresholdType

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

方法

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。

適用於