1. 程式人生 > >動態讀取配置檔案 config

動態讀取配置檔案 config

動態讀取config配置檔案,  否則配置檔案修改之後不能讀取更新部分報錯,

 try {
InputStream in =new FileInputStream("ip.config");//這裡配置檔案地址寫成全路徑就會報錯,應該只寫檔名

   p.load(in);
   in.close();
   if(p.containsKey("fuck")){
       this.url = p.getProperty("fuck");
       c = this.url.split(",");
   }
} catch (IOException ex) {
ex.printStackTrace();
}
return c;

InputStream stream=Thread.currentThread().getClass().getResourceAsStream("/config.properties");
但不能這樣寫:
InputStream stream = Thread.currentThread().getClass().getClassLoader().getResourceAsStream("config.properties");
但可以這樣寫:
InputStream stream = this.getClass().getClassLoader().getResourceAsStream("config.properties");


InputStream stream = new FileInputStream("/config.properties");  //相對於專案web-inf/classes目錄
為什麼 我就不再解釋了吧。
如果是在web專案中,我們還可以這樣寫:
InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties");
不過servlet已經幫我們封裝了,我們一般這樣寫:
ServletContext.getRealPath("/")  這裡的斜槓是相對與專案部署後的WebRoot為根目錄。

va里加載Properties檔案都是通過Java.util包裡的Properties類的load()方法來載入一個Properties配置檔案,load()方法需要接收一個檔案輸入流,而InputStream的構建需要Java.io.File物件,即new FileInputStream(new File(path));現在問題就集中在如何動態獲取

ava里加載Properties檔案都是通過Java.util包裡的Properties類的load()方法來載入一個Properties配置檔案,load()方法需要接收一個檔案輸入流,而InputStream的構建需要Java.io.File物件,即new FileInputStream(new File(path));現在問題就集中在如何動態獲取這個路徑。