2017-10-06 25 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是在發生新變化時將文件熱切換到輸出目錄的IDE。 – Acewin

+0

謝謝,你是對的我編輯了bin中的屬性,現在它的工作 – amt14779