序列化物件到檔案

2021-05-22 12:18:04 字數 3264 閱讀 2088

資訊儲存在記憶體中是非常好的,但有時你的使用者不得不關閉你的應用程式。如果你想知道儲存在記憶體中是什麼資料,也就意味著(可能)你有時需要把資訊寫入檔案。今天,我們來看乙個

.net

內建特徵叫做序列化

– 從檔案讀寫資料非常的容易。

在這個例子中,我想建立乙個程式跟蹤所有有汽車的朋友。為了實現這個功能我建立了兩個物件:

car和

owner

。car

物件儲存車牌、型號和汽車使用年限。

owner

物件儲存汽車擁有者的一些資訊。每個

car物件包含乙個

owner

物件的引用。

//關於car

的資訊

public

class

car }//

關於汽車擁有者的資訊

public

class

owner

} 因為我們可能不止乙個朋友,我們需要建立乙個

car的列表物件。

list

cars = new

list

();

現在我們已經建立了我們需要的物件了,接下去我們準備序列化他們。當我儲存資料到檔案,我想建立乙個特殊物件用於儲存我想序列化的所有東西。

public

class

objecttoserialize

set

}public objecttoserialize()

} 這個類包含我想系列化的每個物件的引用。在這個例子中,我僅想儲存汽車列表。現在讓我們建立乙個函式用於序列化和反序列化我們的物件。我通常建立乙個

serializer

類用於控制檔案的讀寫。

using

system.io;

using

system.runtime.serialization;

using

system.runtime.serialization.formatters.binary;

public

class

serializer

public

void serializeobject(string filename,

objecttoserialize objecttoserialize)

public objecttoserialize deserializeobject(string filename)

} 正如你所看到的,序列化乙個物件所需要的**實際上是非常小和簡單的。在這一點上,**沒有修改。在

serialize

函式前可以呼叫

objecttoserialize

,我們必須包括

serializable

特性並且我們必須實現

iserializable

介面。

using

system.runtime.serialization;

using

system.runtime.serialization.formatters.binary;

[serializable()]

public

class

objecttoserialize : iserializable

set

}public objecttoserialize()

public objecttoserialize(serializationinfo info, streamingcontext ctxt)

public

void getobjectdata(serializationinfo info, streamingcontext ctxt)

} 作為iserializable

介面,這個類必須包含其他構造方法初始物件,並有乙個

getobjectdata

函式用於描述如何序列化物件。因此

car和

owner

物件也被序列化,他們也需要實現這些方法。

[serializable()]

public

class

car : iserializable

public car(serializationinfo info, streamingcontext ctxt)

public

void getobjectdata(serializationinfo info, streamingcontext ctxt)

}[serializable()]

public

class

owner : iserializable

public owner(serializationinfo info, streamingcontext ctxt)

public

void getobjectdata(serializationinfo info, streamingcontext ctxt)

} 現在,儲存物件列表到檔案,所需要做的是呼叫

serializer

類的serialize

和deserialize

方法。

list

cars = new

list

();//

儲存汽車列表到檔案

objecttoserialize

objecttoserialize = new

objecttoserialize ();

objecttoserialize.cars = cars;

serializer

serializer = new

serializer ();

serializer.serializeobject("outputfile.txt" , objecttoserialize);

//汽車列表以及被儲存到

outputfile.txt中

//從outputfile.txt

檔案中讀取資訊

objecttoserialize = serializer.deserializeobject("outputfile.txt" );

cars = objecttoserialize.cars;

所有的這些都需要從二進位制檔案中儲存和載入

c#自定義物件。像所有檔案一樣,你的這些檔案也可能被破壞。因此,最好的想法是當從檔案讀取乙個破壞的物件時執行錯誤處理。

C 序列化物件到檔案和從檔案發序列化物件

序列化物件和發序列化物件 程式應用過程中,經常會把物件序列化到到檔案中,以儲存資料。然後再從檔案中反序列化出來。具體應用如下 1,構造乙個類 注意一定要加上 serializable 表示可序列。serializable class parameter public string name publ...

把物件序列化到檔案中和從檔案中反序列化的管理類

用於通用的載入或儲存 xml 序列化配置檔案的類,該類通常適用於使用結構來儲存配置資料的程式,例如資料來源配置。型別必須為可序列化的類,並且要實現 collectbase 類,以及乙個通用的索引器。把乙個 datatable 物件序列化到檔案中。datatable table xmlconfigpr...

物件序列化 反序列化

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