摘要:對資源文件.properties的讀寫操做web
- 獲取某個類的位置(編譯後的.class文件的位置):
new Junit().getClass().getResource("").getPath();
獲取classpath的位置(在tomcat中完美獲取,在weblogic中沒法正常獲取,在JavaApplication中也能獲取):tomcat
this.getClass().getResource("").getPath();this
獲取classpath的位置(該方法在jdk7之後無效):spa
Thread.currentThread().getContextClassLoader().
getResource("").getPath();code
Properties類主要是對資源文件進行讀寫操做
它提供了幾個主要的方法:對象
getProperty ( String key)
用指定的鍵在此屬性列表中搜索屬性。也就是經過參數 key ,獲得 key 所對應的 value。blogload ( InputStream inStream)
從輸入流中讀取屬性列表(鍵和元素對)。經過對指定的文件(好比說上面的 test.properties 文件)進行裝載來獲取該文件中的全部鍵 - 值對。以供 getProperty ( String key) 來搜索。資源setProperty ( String key, String value)
調用 Hashtable 的方法 put 。他經過調用基類的put方法來設置 鍵 - 值對。getstore ( OutputStream out, String comments)
以適合使用 load 方法加載到 Properties 表中的格式,將此 Properties 表中的屬性列表(鍵和元素對)寫入輸出流。與 load 方法相反,該方法將鍵 - 值對寫入到指定的文件中去。inputclear
清除全部裝載的 鍵 - 值對。該方法在基類中提供。
讀取資源文件的代碼以下:
public void getProperties(){ // demo 中獲取的資源文件都是放在src下面的,即都會被編譯到 classpath 下 // 若是 properties 文件不放在 classpath 下,使用絕對路徑也不能取到文件, 這一點還須要再研究下, // 能夠用BufferedInputStream(inputStream)方法嘗試下 // 在 getResourceAsStream 中的參數以 "/" 開頭,則獲取到的是 classpath, 獲取資源文件須要本身寫上包名, 如代碼1 // 若是參數直接寫資源文件的文件名, 則表示資源文件與該類在同一個目錄下, 如代碼2 // 若是把獲取資源文件做爲靜態方法, 那麼該方法中沒法使用對象 this // 爲了在在靜態方法中獲取資源文件,能夠使用 Obejct.class 來獲取一個 Class 對象, 如代碼3 // getResourceAsStream 只是須要一個 Class 對象, 用 int.class 照樣行 InputStream inputStream = this.getClass().getResourceAsStream("/properties/param.properties"); //代碼1 資源文件與類不在同一個包中 /* InputStream inputStream = this.getClass().getResourceAsStream("aram.properties"); //代碼2 資源文件與類在同一個包中 InputStream inputStream = Object.class.getResourceAsStream("aram.properties"); // 代碼3 若是當前類是個靜態方法,則不能使用代碼2,要把this 換成 Object.class() */ Properties properties = new Properties(); try { properties.load(inputStream); // 把獲取的資源文件加載到 Proeprties 類中,而後能夠經過 getProperty("key") 獲取屬性的值 Enumeration enumeration = properties.propertyNames(); // 獲取資源文件中的屬性 while(enumeration.hasMoreElements()){ String paramName = enumeration.nextElement().toString(); System.out.println("資源文件中的參數名:" + paramName); } } catch (IOException e) { e.printStackTrace(); } }
寫入資源文件的代碼以下:
todo