我正在开发一个应用程序,它应该可以保存/加载数据。大多数数据存储在类的实例中。实例中的数据包括:
- 一个
double[][]
数组 - 一些
String, int, bool
和一些枚举器
我有多个这些实例+一些我想存储在单个文件中的全局数据。
到目前为止,我将所有内容保存为二进制数据,使用
DataOutputStream out = new DataOutputStream(FileOutputStream(file));
out.writeInt()/writeBoolean()/writeUTF()/etc
这很好用,问题是它不是很灵活。如果我向容器类添加/删除一些变量,则没有简单的方法来保持旧格式兼容。我开始使用在文件开头添加的版本号。但这会导致每个格式版本都有一个大的 loadData/closeData 方法。
基于文本的文件是不可能的,因为它们为我的双数组使用了太多空间。
你知道解决这个问题的好方法吗?即定义一种不会产生大量代码的向后兼容格式?任何建议表示赞赏。
我正在考虑的一个想法是用一个标识该变量的整数来标记每个变量。所以格式是[identifier1][variable1(String)][identifier2][variable2(double[][])]...
.
我也想过序列化,但我没有任何经验,也不能真正判断这是否是正确的方法。
如果您需要有关数据或一些示例的更多信息,请发表评论。