データを.jarファイル内のファイルに保存して、もう一度読み取る必要があります。
私はClass.getResourceAsStream()
メソッドを使用できることを知っていますが、それはInputStream
を返しますread fromです。しかし、私はwrite。への方法を探します
.jarファイル内のファイルにデータを保存し、再度読み取る必要があります
いいえ、必要ありません。
代わりに、Jar内に「デフォルト」ファイルを保存します。変更されている場合は、変更されたファイルを別の場所に保管してください。一般的な場所の1つは、user.home
のサブディレクトリです。ファイルを確認するときは、最初にファイルシステム上の変更されたファイルの存在を確認し、存在しない場合はデフォルトファイルをロードします。
一般的に、戦略よりも目標を説明する方が良いことに注意してください。 'Jarに変更されたファイルを保存する'は戦略ですが、 '実行間で設定を保存する'が目的かもしれません。
関連:XY問題とは/
これは実際にはサポートされていません。原則として、jarファイルを操作できますが、新しいコンテンツが正しくロードされる保証はありません。ビルドツールでjarファイルを管理し、プログラム自体が管理する永続ストレージ用に別のものを選択します。ファイルのように。
ロードされたjarファイルを安全に変更できる可能性はほとんどありません。使用中に変更することはお勧めできません。
これを行う場合は、プレーンファイルシステムディレクトリを使用し、そこからファイルを追加/削除します。これでも期待どおりに機能しない可能性があります。
_Java.util.jar
_(または実際には_Java.util.Zip
_)パッケージを使用して、任意のjarファイルを操作できます。 jar内のファイルは圧縮されるため、これはデータを格納するための最もtime効率的な方法ではありません。
おそらく別の場所にディレクトリを使用する必要があります(例:System.getProperty("user.home") + "/.myProgram"
)または_Java.util.prefs
_を参照してください。
Class.getResource()
はURLを返します。理論的には、このURLを使用してInputStream
およびOutputStream
を作成できます。しかし、ほとんどの場合、生成されたJARは読み取り専用ファイル(またはアーカイブ)です。そのため、アプリケーションを使用しようとするとトリップする可能性があります。