データを保存/ロードする可能性があるアプリケーションに取り組んでいます。ほとんどのデータは、クラスのインスタンスに格納されます。インスタンス内のデータは次のもので構成されます。
double[][]
配列_- 一部
String, int, bool
および一部の列挙子
これらのインスタンスが複数あり、1 つのファイルに保存したいグローバル データがいくつかあります。
これまでのところ、すべてをバイナリデータとして保存します。
DataOutputStream out = new DataOutputStream(FileOutputStream(file));
out.writeInt()/writeBoolean()/writeUTF()/etc
これはうまく機能しますが、問題はあまり柔軟ではないことです。コンテナー クラスにいくつかの変数を追加/削除した場合、古い形式に互換性を持たせる簡単な方法はありません。ファイルの先頭に追加するバージョン番号を使い始めました。ただし、これにより、すべてのフォーマット バージョンに対して大きな loadData/closeData メソッドが発生します。
テキストベースのファイルは問題外です。なぜなら、それらは double 配列に対してあまりにも多くのスペースを使用するからです。
この問題を解決する良い方法を知っていますか? つまり、膨大な量のコードにならないように下位互換性のあるフォーマットを定義しますか? 任意の提案をいただければ幸いです。
私が考えているアイデアは、すべての変数をその変数を識別する整数でマークすることです。したがって、形式は[identifier1][variable1(String)][identifier2][variable2(double[][])]...
.
連載も考えましたが、経験がなく、それが正しい方法かどうかはわかりません。
データまたはいくつかの例に関する詳細情報が必要な場合は、コメントしてください。