讀取資源文件信息

讀取資源文件

摘要:對資源文件.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 類

Properties類主要是對資源文件進行讀寫操做
它提供了幾個主要的方法:對象

  • getProperty ( String key)
    用指定的鍵在此屬性列表中搜索屬性。也就是經過參數 key ,獲得 key 所對應的 value。blog

  • load ( InputStream inStream)
    從輸入流中讀取屬性列表(鍵和元素對)。經過對指定的文件(好比說上面的 test.properties 文件)進行裝載來獲取該文件中的全部鍵 - 值對。以供 getProperty ( String key) 來搜索。資源

  • setProperty ( String key, String value)
    調用 Hashtable 的方法 put 。他經過調用基類的put方法來設置 鍵 - 值對。get

  • store ( OutputStream out, String comments)
    以適合使用 load 方法加載到 Properties 表中的格式,將此 Properties 表中的屬性列表(鍵和元素對)寫入輸出流。與 load 方法相反,該方法將鍵 - 值對寫入到指定的文件中去。input

  • clear
    清除全部裝載的 鍵 - 值對。該方法在基類中提供。

讀取資源文件的代碼以下:

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
相關文章
相關標籤/搜索