保存文件格式

Posted

技术标签:

【中文标题】保存文件格式【英文标题】:Save file format 【发布时间】:2010-09-27 18:04:21 【问题描述】:

所以我们有一个需要从磁盘保存和加载其状态的应用。

我们目前已经获得了一个对象的状态,并且该对象正在使用 XML 序列化器对象直接序列化为 XML。我已经与该项目的其他开发人员讨论过这个问题,他似乎认为这是解决这个问题的完美方式。他断言,磁盘上的模型与内存中的表示完全一样是理想的。

我觉得数据保存到磁盘的方式需要与其在内存中的表示分离,以便我们可以修改其中一个或另一个,而不会对保存的格式造成重大更改。更不用说 XML 序列化程序要求所有内容都需要读/写,而在对象中可能有很多情况需要只读。

问题是关于将内存数据序列化为 XML 的最佳实践。 是直接从 XML 中水合您的对象,还是通过使用唯一目的是输入 XML 序列化程序的对象来解耦过程?

【问题讨论】:

xml中的版本号,是否支持读取旧版本? 问题到底是什么? 【参考方案1】:

听起来你在指出他的解决方案的缺点,但并没有真正提供一个好的替代方案。

所以要么:

a) 使用他的解决方案,直到它不再起作用为止

b) 提出您自己的解决方案来解决您指出的问题。

可能值得探索的一件事:您可以查看像 db4o 这样的对象数据库,它可能能够处理对象的保存/加载以及您对类所做的大多数更改,但可能不适合您希望能够直接编辑磁盘状态的情况(您可以这样做,但您必须跳过几个环节)。

【讨论】:

我确实有一个解决方案,使用第二个对象,其唯一目的是表示要序列化的数据。这样,主对象的数据存储方式就可以更加灵活。 哦,我明白了,您想使用某种中间对象。这可能行得通。

以上是关于保存文件格式的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中使用 SaveFileDialog 保存为特定文件格式

WORLD 文件格式的保存

vc2010怎么保存程序文件

我的记事本不能保存文件,请问是怎么回事

怎么在abbyy保存的文件格式为PPTX

VC怎样把文件存成BMP格式