在Java和Web中讀取properties文件

6x7d 9年前發布 | 112K 次閱讀 Java Java開發

  • 普通java工程讀取properties文件
  • web工程中servlet讀取properties文件
  • web工程中非servlet讀取properties文件
  • </ul>

    不論哪種情況加載properties文件的大概流程是一樣的,只不過是生成流時使用的文件路徑有區別.

    假設db.properties文件:username=root

    如果知道properties文件的絕對路徑:

    String path = "C:\\db.properties";
    FileInputStream in = new FileInputStream(path);
    Properties prop = new Properties();
    prop.load(in);
    prop.getProperty("username");

    web工程中,文件在工程中的位置$app/WEB-INF/classes/db.properties

    在Servlet中有2種方式:

    InputStream in = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
    Properties prop = new Properties();
    prop.load(in);
    prop.getProperty("username");
    String path = this.getServletContext().getRealPath("/WEB-INF/classes/db.properties");
    FileInputStream in = new FileInputStream(path);
    Properties prop = new Properties();
    prop.load(in);
    prop.getProperty("username");

    非Servlet時,假設類名為Demo,要使用類裝載器來讀取,也有兩種方式:
    1.直接將文件裝載到內存中
    2.得到文件的絕對路徑再進行操作

    InputStream in = Demo.class.getClassLoader().getResourceAsStream("db.properties");
    Properties prop = new Properties();
    prop.load(in);
    prop.getProperty("username");
    //弊端:類裝載器加載內容時,會先查找內存中是否已經存在相應的內容
    //如果有就不再加載直接使用內存中的,所以此方法,第一次加載后,如果文件內容有變動,第二次加載后還是原來的內容,無法加載修改后的內容
    //下邊的方法取文件的絕對路徑來加載不會有這種問題
    String path = Demo.class.getClassLoader().getResource("db.properties").getPath();
    FileInputStream in = new FileInputStream(path);
    Properties prop = new Properties();
    prop.load(in);
    prop.getProperty("username");

    上面在使用FileInputStream時傳入的都是絕對路徑,也可以使用相對路徑:

    普通java工程:是相對于當前類的所在路徑
    web工作:是相對于$tomcat/bin             ($tomcat為tomcat的路徑名)

    來自:http://my.oschina.net/lhplj/blog/386014

 本文由用戶 6x7d 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!