2012-07-26 111 views
0

我正在構建一個小應用程序,並且需要將我的數據存儲到文件。我讀了一些關於保存對象。我之前在Java中做過這個,但那是幾年前。然後我保存了objets的洞數組,我想知道我是否可以在C#中做同樣的事情?將對象保存到文件

我正在使用一個名爲Animals的List,並且我還將該類序列化,因爲這是此任務的需求。如果我已經序列化動物類,那麼我想我不需要序列化子類到動物?

有些幫助是preciated,謝謝!

編輯:

嗨!我已經做了一些測試代碼來保存列表,我只是想知道我是否正確?我還沒有添加任何Try/Catch代碼。當我打開文件並閱讀列表時,整個列表是否會被加載?反饋是preciated!

filestream = new FileStream(filePath, FileMode.Create); 
     BinaryFormatter b = new BinaryFormatter(); 
     b.Serialize(filestream, animals); 
     filestream.Close(); 
+0

我建議你閱讀這個問題:http://stackoverflow.com/questions/20084/xml-serialization-and-inherited-types – Jonathan 2012-07-26 08:52:57

+0

感謝您的鏈接,但它是關於XML序列化!我想要不使用XML – 2012-07-26 08:59:44

回答

0

如果您的類只包含可序列化類型,則可以將您的基類和所有子類標記爲可序列化。這與Serializable屬性

0

它看起來像你做一個簡單的例子,在這種情況下使用serialisable可能是罰款做,但你很快會發現它是使用一個真正的痛苦,並標記爲類的任何變化因爲serialisable會使舊文件不可讀。

這使得序列化適合於相當短暫的存儲,例如 - 在步驟之間保持批處理程序的狀態或通過網絡傳輸數據。如果你真的在寫文件,你可能會更好地設計一個文件格式。

一個很好用的語言是xml--它基本上是爲輸出樹狀結構而設計的,它很容易添加,因爲所有內容都是按名稱而不是位置來讀取的。

如果你只是有非常簡單的數據,你可以設計一個文本格式;一些簡單的選項是使用製表符或空格分隔。如果你有態的類型,你可能需要考慮這一點得到的數據結構,它們的工作對他們的所有,也可以讓所有的子類型字段,然後用「類型」項如區分:

(空間分隔)
類型NumberOfLegs NumberOfFins
魚 - 2
獾4 -
SeaDog 3.5 7

0

對象序列化是一個偉大的事情。它允許您存儲對象的狀態,與其他系統共享對象,以在業務層和應用程序的前端之間傳遞對象。

一般來說,總是說明你需要什麼樣的序列化:binary,xml,json?兩個系統相互溝通的方式影響選擇。

你說你不需要xml序列化。你不是嗎?管理二進制序列化對象的日誌記錄,調試和跟蹤非常不自在。你不需要XML?沒關係,我們可以使用自定義序列化器,但是可以幫助您避免二進制序列化。除非它是必需的!

總之,這裏的MSDN鏈接:

+0

這是使用二進制序列化的必備任務! – 2012-07-26 15:12:16