2011-01-06 71 views
0

比方说,我得到了一个保存一些重要信息的Dictionary类型对象。 那么,我的用户想要关闭程序并在稍后处理它。VB.NET:保存并加载数据?

如何保存的字典和其他变量在一个单一的文件,这只能通过我的程序本身看?

回答

2

如果你正在寻找简单,我有两句话给你:binary serialization

内置在.NET Framework中的序列化能力是真棒对于这样的任务,在那里你只是想吐出一些程序的实例数据到磁盘,而不用担心写一串代码自己。

既然你不担心不拘于任何类型的开放式或标准的数据格式,有对XML序列化没有好处。只需选择一个自定义文件扩展名(适用于您的应用程序)(最好还有一个尚未被许多其他用户使用的文件扩展名 - 请记住,您不必将自己限制为3个字符),然后将该文件扩展名与您的应用程序关联Windows外壳。

当然,这不会做任何加密数据。有人仍然可以在记事本中打开数据文件并查看其内容,但它们不会很漂亮。这不是一种人类可读的数据格式,但它也不一定安全。您的问题对于这是否是必需的不明确。

编辑:我看到你已经添加了一条评论,你希望能够加密你的数据。没问题。这个问题被接受的答案提出了一种与二进制序列化结合的方法:How to encrypt and save a binary stream after serialization and read it back?本质上,您将要使用CryptoStream class来处理加密/解密。

1

有大约一百万种方法可以做到这一点。很多事情取决于你想要什么以及你想走多远。这里的关键部分是“只能通过我的程序阅读”。如果你不想让别人阅读它,你很可能需要想出一些文件格式或加密机制。

+0

我想为这个应用程序(和一个加密机制)制作我自己的文件格式,你能指导我吗? – Voldemort 2011-01-06 16:08:04

0

如果你只谈论数据相对较少,它可能是很容易,只是它序列化到XML。请参阅http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.serialize.aspx

基本上,您为序列化程序提供了一个对象,并将其所有属性和内容转换为XML。

从那里,你可以对它进行加密(见http://www.codeproject.com/KB/security/SimpleEncryption.aspx),并将其写入文件。

但要小心。 .NET程序很容易反汇编,并且可以找到您的加密密钥。