關於配置檔案的讀取,網上資料也不少,但是針對性並不是很強。大部分也是copy,而且方式單一,下面我來總結一下關於讀取src,即class下配置檔案的方式以及區別。
首先我們來定義乙個工程,建立乙個servlet,請求到後台後再轉向該頁面。主要看servlet**處理部分。然後在src下建立乙個配置檔案config.properties,定義乙個屬性name。
第一種:
類載入方式,這個在網上那可是一片的解釋,可是終歸到底就是使用類載入器進行載入,沒有其他兩樣!
主要**:
try catch (exception e)
類載入器的獲得方式寫法不一,但是我看就使用本類class就行了。獲得配置檔案的流進行解析。
第二種:
我自己成為邦定的方法,邦定乙個配置檔案然後直接讀取屬性,這個配置檔案可以在任何包下面。
主要**:
try catch (exception e)
第三種:
在web工程中我們都可以獲得系統的request物件,這個物件可以獲得請求的一些屬性,也可以獲得系統的一些資訊,通過這個物件可以得到系統的路徑資訊,然後得到配置檔案物理檔案,再得到檔案流然後解析。
但是如果使用了絕對路徑,那就應該注意路徑分隔符的書寫方式,因為在windows和linux下的寫法是不一樣的。我們通過環境屬性得到系統檔案分隔符然後再進行組裝。
string realpath = request.getsession().getservletcontext().getrealpath("");
try catch (exception e)
通過路徑組裝資訊可以看到,這個方法同樣可以讀取在web-inf下定義的配置檔案。
第四種:
我自己叫做屬性方式,首先得到環境資訊,然後通過系統自己載入某個配置檔案。
try catch (exception e)
response.sendredirect("index.jsp");
}
通過**可以看到,這個方法同樣可以讀取web-inf下的檔案。
但是以上四種方法有什麼區別嗎?
以我自己的看法來說,前兩種方法是依賴類載入器的,而後面兩個沒有。而且後面兩個方法可以獲得web-inf下的配置檔案,而前兩種不可以。
另外最大的區別是,前兩種方法讀取後如果配置檔案被修改,再呼叫進行讀取的話,不能得到修改後的屬性。
最後原始碼附上,請多指教!
請您到iteye看我的原創:
關於java讀取src配置檔案的問題
我們的專案完成了,一切除錯成功,打包了,問題都出來了。又是配置檔案路徑找不到的問題!一開始我用的載入路徑的方法是這樣的 public static string getconf string key catch filenotfoundexception e catch ioexception e ...
關於Jboot讀取不到配置檔案
在專案中修改埠,但是啟動後還是預設8080!配置檔案中如下 type default undertow support undertow jboot.server.type undertow jboot.server.host jboot.server.port 9111 jboot.server....
讀取配置檔案
類載入器 1 直接用class.forname 類的路徑名 class.forname com.hsf.classloader.classloader 2 用classloder 類載入器 inputstream in classloader.getsystemresourceasstream aa...