一般講到檔案儲存,大都是可被識別之內容的檔案居多,主要是這些檔案還是可以被某些程式開啟,不過,這次遇到卻是需要把物件作為檔案格式儲存下來,後續有需要用到時候,再把這些物件取出。不過為啥要這樣做呢?
舉例:
一個List<Dataset>
物件來說,其內容在有限時間區間內是會被重複利用,若是,每次用到都要再重新取得資訊,是相當浪費資源,所以,會先將此物件以檔案型態存放,有用到就直接取得檔案就可以,避免再重複邏輯計算
所以,就必須把物件用檔案型態存放,我這邊採用XML檔案儲存。範例中先把Datatable
放入list
物件
序列化需要使用到System.Xml.Serialization.XmlSerializer
類別來實作
Object寫入XML File
宣告
XmlSerializer
物件,Type就採用序列化的型別List<System.Data.DataTable>
1System.Xml.Serialization.XmlSerializer writer =new System.Xml.Serialization.XmlSerializer(typeof(List<System.Data.DataTable>));使用
System.IO.StreamWriter
類別指定要寫入檔案的路徑,透過XmlSerializer的Serialize
將物件寫入到XML檔案1234using (System.IO.StreamWriter WR = new System.IO.StreamWriter(Server.MapPath("eee.xml"))){writer.Serialize(WR, oo);}
要用Objec
也是可以
從XML File讀取Object
既然有寫入,當然就要讀出囉,這邊就比較簡單一點
前置作業跟寫入步驟是相同的
1System.Xml.Serialization.XmlSerializer writer =new System.Xml.Serialization.XmlSerializer(typeof(List<System.Data.DataTable>));把
Serialize
改為Deserialize
且把原本是Writer改為Reader就可以,不過須注意一點,反序列化之後還必須透過轉型,才有辦法回復到原本的物件型別1234using (System.IO.StreamReader RR = new System.IO.StreamReader(Server.MapPath("eee.xml"))){oo = (List<DataTable>)writer.Deserialize(RR);}
這就大功告成了