この質問がすでに回答されている場合はご容赦ください。しかし、私はこの1時間オンラインで検索して、それを理解しようとしています。
私はJavaプログラミングに戻ることに取り組んでおり、アプリケーションに保存するデータを保存/読み取るための最良の方法を理解しようとしています。すべてをテキストファイルに入れて、アプリケーションの起動時にすべてを読み込み、終了時にすべて保存しますか?アプリケーションが大きすぎると、メモリを使い果たしてしまう可能性があると思いましたか?
それはあなたが持っているデータの量に依存します。
一部のユーザー設定のように、少数のキーと値のペアを保存する場合は、Windowsのレジストリ、Linuxの構成ファイル、およびその他のユーザー設定を保存するための推奨される方法を使用して実装される、 Preferencesクラスを使用できます。 plattforms。
レジストリには多すぎるがデータベースを保証するには不十分な実際のデータ(数MB程度)がある場合は、1つ以上のフラットファイルを使用することが解決策になる可能性があります。データが複雑な場合は、自家製のものではなく、XMLなどの標準化された形式を使用することをお勧めします。Javaには、XMLの簡単な解析とシリアル化を可能にするクラスがあります。別の迅速で汚い解決策は、ObjectStreamsを使用してオブジェクト全体を保存および復元することです。これは実装が非常に簡単ですが、不要な可能性のある多くのメタ情報が格納されているため、あまり効率的ではない可能性があります。
ただし、大量のデータがある場合(完全に読み書きできる以上の場合)、データベースを使用するのが賢明な方法かもしれません。データベースを使用すると、大量のデータ(数GBのオーダー)に簡単にアクセスでき、実装が難しい多くの機能(インデックスを使用したレコードの検索など)を無料で提供します。データベースは魔法ではありません。また、ファイルを使用してデータを保存します(ただし、非常に巧妙な構造のファイル)。データベースのすべての機能を自分で複製できます。しかし、既存のソリューションを使用できるのに、なぜ車輪の再発明を行う必要があるのでしょうか。
いくつかの情報を保存する必要がある場合は、プロパティファイルを使用できます。
プロパティだけでなく、より複雑な構造を格納する必要がある場合は、データベース(HSQL、Oracle、Mysql、MSSQLなど)を使用することをお勧めします。必要に応じて。
データをファイルに出し入れする方法も問題である場合は、よく知らない場合に備えて、キーワード「シリアル化」を破棄したかっただけです。グーグルそれ、たくさんのチュートリアルがあります。一言で言えば、Javaには、バイナリバイトストリームへのオブジェクトの書き込みとバイナリバイトストリームからのオブジェクトの読み取りのサポートが組み込まれています。もちろん、ファイルへの書き込み/ファイルからの読み取りも可能です。したがって、さまざまなメンバーを保存および読み取るためのコードを実装する必要はありません。プログラムの状態を保持するコード内のオブジェクトを識別し、それらをシリアル化するだけです。XMLにシリアル化して、作成したファイルを手動で編集することもできます。