我正在創建一個錯誤日誌庫,它在指定的位置創建一個文件,然後將錯誤信息保存在該文件中,然後可以通過我打算聯合編寫的單獨的任務程序讀取該錯誤信息與這個圖書館。序列化和反序列化多個對象
說,我已把它的方式是二進制格式(使用BinaryFormatter()
和FileStream()
),其中序列化一個名爲ErrorEntry類到文件,並將其附加到文件末尾。這意味着我有一系列ErrorEntries緊接着。我沒有將它作爲列表,因爲從文件中讀取所有信息到列表中,添加條目,然後將其保存迴文件並轉儲資源似乎並不實際。只需要執行單個寫入命令,並將每個命令存儲爲自己的序列化對象似乎更加有效。
我的問題是,我可以找到幾個序列化列表或單個對象的例子,但沒有多個 - 但單獨的對象。雖然我想將它們保存爲單個對象,但在加載它們時,我想讀取對象並將該系列作爲該對象的列表返回。我想有類似的東西
while(!EOF)
{
//deserialize each object
//add individual object to a list
}
//return the list of objects
我該如何去反序列化每個對象從單個文件?它是否具有上述工作的內部標記,我只需檢測它是否是文件的結尾,還是需要做其他操作才能讀取它們?
你爲什麼不乾脆把所有的物體放到'名單
@OndrejTucny他想追加到文件中而不加載所有以前的條目。 – weston 2013-05-07 10:22:18
他說爲什麼它看起來合理。要在對象級別反序列化,您必須在每次輸入後編寫分隔符序列,並在讀取文件時對其作出反應。 – Tommi 2013-05-07 10:22:50