2012-03-29 29 views
3

プロパティファイルを読み込む際に助けてください。 は、私はプロパティファイルを変更し、プロパティは、クラスローダによってファイルをロードした後、このプロパティファイルをJavaでリロードする方法

Properties prop = new Properties(); 
InputStream trackerFileStream = 
    LoadProperty.class.getClassLoader().getResourceAsStream("sample.properties"); 
prop.load(trackerFileStream); 

のようなコードを持っています。 同じプログラムの実行で最新の変更を取得できません。

プログラムを再実行せずにプロパティファイルを再読み込みする方法を教えてください。

+0

プロパティファイルを変更した後、上記のコードを実行しますか? – oers

答えて

0

ストリームを正しく閉じる/フラッシュしますか?ファイルにアクセスするためにクラスローダーを使用する理由ファイルが外部ファイルの場合は、通常FileInputStreamなどでアクセスする必要があります。

+0

私の場合、私はファイルの正確な場所を指定することはできません。そのため、私はクラスローダーを使用しています –

+0

実際には、アプリケーションは.jarファイルとしてパックされており、ランタイムを変更することはできません。ファイルを読み込んだり修正したりする必要があります。ランタイムは、指定された絶対パスまたは相対パスに配置する必要があります。 – jabal

+0

ありがとうございます.Jabalは、InputStreamをクローズした後に動作しています(つまり、プロパティファイルの最新の値を読み取ることができます)。 –

0

更新する場合は、いつでもリソースをチェックしてプロパティを再読み込みする必要があります。

クラスパスからプロパティをロードする際に問題があります。ファイルシステムを使用している場合は、ファイルの最後に変更された属性を確認し、それをリロードするかどうかを決定できます。 Java 7では、evernはファイルが変更されたときにあなたを呼び出すリスナーを登録することができます。リソースをロードするときにはこれを行うことはできません。

しかし、あなたはより良いことができます。 Apacheのconfigurationパッケージを使用してください。これはすでにリロードロジックを実装しているので、実際にリソースにマップされている「構成」に対して作業して、常に更新されたデータを取得することができます。

関連する問題