2017-10-06 13 views
0

プロパティキーをロードするクラスがあります。実行中は20秒間スリープ状態になり、スリープ状態でプロパティファイルに新しいキーを追加して保存します。プログラムが起動すると、再びプロパティファイルが読み込まれますが、その出力にはスリープ中に追加されたプロパティは表示されません。プロパティファイルの変更をプログラムに認識させるにはどうすればよいですか?プロパティファイルのスリープ

public class Test { 
    public static void main(String[] args) { 
     Properties props = new Properties(); 
     InputStream is = Test.class.getClassLoader().getResourceAsStream(
       "com/vijayspring/common/CityIns.properties"); 

     try { 
      props.load(is); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     System.out.println(props.stringPropertyNames()); 

     try { 
      Thread.sleep(20000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 

     Properties props1 = new Properties(); 
     InputStream is1 = Test.class.getClassLoader().getResourceAsStream(
       "com/vijayspring/common/CityIns.properties"); 

     try { 
      props1.load(is1); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     System.out.println(props1.stringPropertyNames()); 
    } 
} 
+0

正確にプロパティファイルを保存しますか?そして、あなたは不変の場所からプロパティをロードすることを知っていますか? –

+0

iamはプロジェクトのsrcフォルダに保存し、キーをロードしてコンソールに出力しています – amt14779

+0

その部分を追加してください。あなたの質問には不可欠です。 –

答えて

1

あなたはsrcフォルダを参照しているとは、私はあなたがIDEを使用していると仮定:

は、ここに私の現在のコードです。どのIDEが正確か分かっていれば、私の答えでより正確になります。

それにも関わらず、ClassLoader.getResourceAsStream()方法はbinからプロパティファイルを読んで、通常はそれがJavaプログラムを起動し、一度IDEによって構築されているフォルダ、(実際の名前は、IDEごとに異なる場合があります)。 Javaソースファイルではないため、.javaで終わらないファイルは、単にsrcからbinにコピーされます。

20秒後に、プログラムはbinフォルダ内の未編集プロパティファイルを読み取ります。

+0

私の考えは同じです。 Intellijの場合、ターゲットディレクトリになります。相対パスで読むときの典型的なケース。通常、IDEは、新しい変更が発生したときにファイルを出力ディレクトリにホットスワップするものです。 – Acewin

+0

ありがとうございました。私はビン内のプロパティを編集しました。 – amt14779