2011-01-08 4 views
5

.jar内にある.xmlファイルを開いて編集するにはどうすればよいですか?Javaで.jarファイルを開いて編集しますか?

私は

InputStream myStream = this.getClass().getResourceAsStream("xmlData.xml"); 

...あなたがすることができることを知っている。しかし、どのようにファイルを編集し、xmlData.xmlを開き、.jarでそれを保存しますか?私はこれを知っていると便利ですが、.jar ... の外部にあるファイルを編集したくないので、アプリケーションは常に実行しておく必要があります。

ありがとうございました!

+0

xmlファイルをxmlData.xmlと同じjarファイルの中に変更するアプリケーションはありますか? – Enrique

+0

それらは同じものです... .jarはその中の.xmlファイルを持っています...私は.jarファイルを実行していて、その中の.xmlを編集する.jarアプリケーションが必要です – Zeveso

答えて

3

Jarファイルは、ファイルの接尾辞が異なる.zipファイルとコンテンツの命名規則です。だから、java.util.zipのクラスを使って内容を読み書きしてください。

コンテンツを変更することは、クラスローダが内容に合ったものとしてキャッシュする可能性があるため、実行中のシステムに影響することはありません(またはそうである可能性もあります)。

実際にこれで達成しようとしていることについてさらに知っておくとよいでしょう。オンザフライで瓶の内容を変更すると、複雑でエラーが発生しやすいアプローチのように聞こえる...

+0

私はすべてを保存したい.jarファイル内の.xmlファイルの私のデータ...名前の電子メールのようなものになります – Zeveso

+0

.jarファイル内のXMLファイルにデータを永続化していますか?アプリを再デプロイする必要があるときはどうなりますか? XMLを使用したいと考えていると仮定します。アプリケーション外で.xmlファイルを永続化し、そのXMLファイルのファイルシステム上の場所を設定するために(おそらく.propertiesファイルまたはSpringを使用して)設定を使用することを検討する必要があります。 .jarsの内容は、バイナリの整合性などを保証するために残す必要があります。 – whaley

+1

私は本当にそれがきれいにできるとは思わない。最初に、jarファイルを最初に見つけ出すという問題を解決する必要があります(クラスローダーツリーを歩いたり、javaプロセスの起動パラメータを調べる必要があります)。その後、java.util.zipを使用してファイルの解凍、編集、および再パックを行い、クラスローダーのキャッシュが更新されたファイルを読み込むように祈っています。 :)すべきではありません。 –

1

GUIを持っており、あなたはWebサイト/サーバーにアクセスできますが、JWSがその答えかもしれません。 JWSアプリケーションで使用できるJNLP API。 PersistenceServiceなどのサービスを提供します。ここには小さいdemo. of the PersistenceServiceがあります。

考えられるのは、JWS永続ストアのXMLをチェックすることです。存在しない場合はそこに書き込み、それ以外の場合はキャッシュされたバージョンを使用します。変更された場合は、ストアに新しいバージョンを書き込みます。

デモシャットダウン時にストアに書き込み、起動時に読み込みます。しかし、メニューアイテムやタイマーなどで呼び出せない理由はありません。

関連する問題