物件的序列化

2021-05-28 02:21:02 字數 1819 閱讀 2055

物件的序列化

物件序列化:

物件序列化的定義:指把並行資料轉換成序列資料的處理過程,而物件序列化(object serialization)是指把物件的狀態資料以位元組流的形式進行處理,一般用於實現完全的物件。簡單地說,物件的序列化可以理解為使用i/o「物件流」型別實現的物件讀/寫操作。

以物件為單位進行資料的儲存和傳輸的方法是:物件序列化。

物件序列化的主要任務是寫出物件的狀態資訊,並遍歷該物件建立乙個對其他物件的引用,遞迴地序列化所有被引用的其他物件,從而建立乙個完整的序列化流。

具體的物件體現:

1,inputstreamreader:位元組到字元的橋梁。

2,outputstreamwriter:字元到位元組的橋梁。

這兩個流物件是字元流體系中的成員。

那麼它們有轉換作用,而本身又是字元流。所以在構造的時候,需要傳入位元組流物件進來。

建構函式:

inputstreamreader(inputstream):通過該建構函式初始化,使用的是本系統預設的編碼表gbk。

inputstreamreader(inputstream,stringcharset):通過該建構函式初始化,可以指定編碼表。

outputstreamwriter(outputstream):通過該建構函式初始化,使用的是本系統預設的編碼表gbk。

outputstreamwriter(outputstream,stringcharset):通過該建構函式初始化,可以指定編碼表。

objectinputstream

objectoutputstream

可以通過這兩個流物件直接操作已有物件並將物件進行本地持久化儲存。

儲存後的物件可以進行網路傳輸。

兩個物件的特有方法:

objectinputstream

object readobject():該方法丟擲異常:classnotfountexception。

objectoutputstream

voidwriteobject(object):被寫入的物件必須實現乙個介面:serializable    否則會丟擲:notserializableexception

serializable:該介面其實就是乙個沒有方法的標記介面。

用於給類指定乙個uid。該uid是通過類中的可序列化成員的數字簽名運算出來的乙個long型的值。

如果被序列化的物件需要被不同的類版本所相容。可以在類中自定義uid。

定義方式:static final longserialversionuid = 42l;

注意:對應靜態的成員變數,不會被序列化。

對應非靜態也不想被序列化的成員而言,可以通過transient關鍵字修飾。

該物件中封裝了位元組流,同時還封裝了乙個緩衝區(位元組陣列),通過內部的指標來運算元組中的資料。

該物件特點:

1,該物件只能操作檔案,所以建構函式接收兩種型別的引數。

a,字串路徑。

b,file物件。

2,該物件既可以對檔案進行讀取,也可以寫入。

在進行物件例項化時,必須要指定的該物件的操作模式。

該物件中有可以直接操作基本資料型別的方法。

該物件最有特點的方法:

skipbytes():跳過指定的位元組數。

seek():指定指標的位置。

getfilepointer():獲取指標的位置。

注意;該物件在例項化時,如果要操作的檔案不存在,會自動建立。

如果要操作的檔案存在,則不會建立,如果存在的檔案有資料。

那麼在沒有指定指標位置的情況下,寫入資料,會將檔案開頭的資料覆蓋。

物件序列化 反序列化

必須新增引用 using system.io using system.runtime.serialization using system.runtime.serialization.formatters.binary 方法 region 物件序列化 物件序列化 任意物件 字串 public st...

物件 序列化 反序列化

public class eventmessage 資訊提示類 型別1 操作日誌2 安全日誌 標題 內容 icon型別 url 執行script指令碼字串 需加 public static void messagebox int m type,string m title,string m body...

物件序列化

using system using system.io using system.diagnostics using system.reflection using system.runtime.serialization using system.runtime.serialization.fo...