2012-07-26 109 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