我正在研究一个应用程序,它应该可以保存/加载数据。大多数数据存储在类的实例中。在实例中的数据包括:选择正确的文件格式
- 一个
double[][]
阵列 - 一些
String, int, bool
和一些普查员
我有这些情况下的多+,我想在一个文件中存储一些全局数据。
到目前为止,我都将其保存为二进制数据,使用
DataOutputStream out = new DataOutputStream(FileOutputStream(file));
out.writeInt()/writeBoolean()/writeUTF()/etc
这工作不错,问题是,它不是很灵活。如果我向我的容器类添加/删除一些变量,仍然没有简单的方法来保持旧格式的兼容性。我开始使用在文件开头添加的版本号。但是这会导致每个格式版本都有一个大的loadData/closeData方法。
基于文本的文件不存在问题,因为它们为我的双数组使用了太多的空间。
你知道解决这个问题的好方法吗?即定义一种不会导致大量代码的向后兼容格式?任何建议表示赞赏。
我想到的一个想法是用一个标识该变量的整数标记每个变量。所以格式将是[identifier1][variable1(String)][identifier2][variable2(double[][])]...
。
我也想过序列化,但我没有任何经验,也不能真正知道这是否是正确的做法。
如果您需要关于数据或某些示例的更多信息,请发表评论。
“我开始使用我在文件开头添加的版本号”,你的意思是serialVersionUID? – 2012-08-03 14:32:28
@GuilhermeTorresCastro不,我不使用序列化,只是一些整数,我每次改变文件格式的东西都会增加。 – brimborium 2012-08-03 14:33:27
@brimborium它不会工作,这就是为什么我删除了我的初步评论。我认为你可能会更容易地分别序列化类中的每个变量并将这些块编入索引,例如,变量名称 – Qnan 2012-08-03 14:36:09