比方說,我得到了一個保存一些重要信息的Dictionary類型對象。 那麼,我的用戶想要關閉程序並在稍後處理它。VB.NET:保存並加載數據?
如何保存的字典和其他變量在一個單一的文件,這隻能通過我的程序本身看?
比方說,我得到了一個保存一些重要信息的Dictionary類型對象。 那麼,我的用戶想要關閉程序並在稍後處理它。VB.NET:保存並加載數據?
如何保存的字典和其他變量在一個單一的文件,這隻能通過我的程序本身看?
如果你正在尋找簡單,我有兩句話給你:binary serialization。
內置在.NET Framework中的序列化能力是真棒對於這樣的任務,在那裏你只是想吐出一些程序的實例數據到磁盤,而不用擔心寫一串代碼自己。
既然你不擔心不拘於任何類型的開放式或標準的數據格式,有對XML序列化沒有好處。只需選擇一個自定義文件擴展名(適用於您的應用程序)(最好還有一個尚未被許多其他用戶使用的文件擴展名 - 請記住,您不必將自己限制爲3個字符),然後將該文件擴展名與您的應用程序關聯Windows外殼。
當然,這不會做任何加密數據。有人仍然可以在記事本中打開數據文件並查看其內容,但它們不會很漂亮。這不是一種人類可讀的數據格式,但它也不一定安全。您的問題對於這是否是必需的不明確。
編輯:我看到你已經添加了一條評論,你希望能夠加密你的數據。沒問題。這個問題被接受的答案提出了一種與二進制序列化結合的方法:How to encrypt and save a binary stream after serialization and read it back?本質上,您將要使用CryptoStream
class來處理加密/解密。
有大約一百萬種方法可以做到這一點。很多事情取決於你想要什麼以及你想走多遠。這裏的關鍵部分是「只能通過我的程序閱讀」。如果你不想讓別人閱讀它,你很可能需要想出一些文件格式或加密機制。
如果你只談論數據相對較少,它可能是很容易,只是它序列化到XML。請參閱http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.serialize.aspx
基本上,您爲序列化程序提供了一個對象,並將其所有屬性和內容轉換爲XML。
從那裏,你可以對它進行加密(見http://www.codeproject.com/KB/security/SimpleEncryption.aspx),並將其寫入文件。
但要小心。 .NET程序很容易反彙編,並且可以找到您的加密密鑰。
我想爲這個應用程序(和一個加密機制)製作我自己的文件格式,你能指導我嗎? – Voldemort 2011-01-06 16:08:04