JAVA讀取屬性文件的幾種方法 – JAVA編程語言程序開發技術文章

1.使用java.util.Properties類的load()方法
  
  示例:

Java代碼
InputStream in = lnew BufferedInputStream(new FileInputStream(name));   
  Properties p = new Properties();   
  p.load(in);  
 
  2.使用java.util.ResourceBundle類的getBundle()方法  
  示例:

Java代碼
ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault());  
  3.使用java.util.PropertyResourceBundle類的構造函數  
  示例:

Java代碼
InputStream in = new BufferedInputStream(new FileInputStream(name));   
  ResourceBundle rb = new PropertyResourceBundle(in);  
  4.使用class變量的getResourceAsStream()方法  
  示例:

Java代碼
InputStream in = JProperties.class.getResourceAsStream(name);   
  Properties p = new Properties();   
  p.load(in);  
  5.使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法  
  示例:

Java代碼
InputStream in = JProperties.class.getClassLoader().getResourceAsStream(name);   
  Properties p = new Properties();   
  p.load(in);  
  6.使用java.lang.ClassLoader類的getSystemResourceAsStream()靜態方法  
  示例:

Java代碼
InputStream in = ClassLoader.getSystemResourceAsStream(name);   
  Properties p = new Properties();   
  p.load(in);  
7.使用apache的PropertiesConfiguration類

  示例:
Java代碼

Configuration config = new PropertiesConfiguration("test.properties");

config.getProperty(key);

 

  補充
  
  Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法
  
  示例:

Java代碼
InputStream in = context.getResourceAsStream(path);   
  Properties p = new Properties();   
  p.load(in);   

        其中name為properties文件名字.但我在網上發現有人說要寫properties文件的絕對路徑,否則測試   不 能通過.我沒驗證過,有興趣的朋友可以試試.
      就我個人而言我是比較偏向用第3方法.我在網上找到一篇介紹的更為詳細的文章,全文如下:
  在設計時,我們往往需要訪問一些適合本地修改的配置信息,如果作為靜態變量,那麼每次修改都需要重新編譯一個class,.config保存此類信息並不適合,這時我們需要ResourceBundle。
   通過ResourceBundle,我們需要訪問位於/WEB-INF/classes目錄下的一個後綴名為properties的文本類型文件,從裡面讀取我們需要的值。

   

Java代碼
Locale locale = Locale.getDefault();   
    ResourceBundle localResource = ResourceBundle.getBundle("ConnResource", locale);   
    
    String value = localResource.getString("test");   
    System.out.println("ResourceBundle: " + value);  
    這裡對應瞭/WEB-INF/class/ConnResource.properties文件內容為:

    test=hello world
    打印出來的結果就是hello world  
    請註意,這裡我們可以利用Locale和ResourceBundle的這個組合創建國際化的java程序。我們可以把locale實例化為

Java代碼
new Locale("zh","CN");
    通過

Java代碼
ResourceBundle.getBundle("MessagesBundle",  locale);

    系統將自動尋找MessagesBundle_zh_CN,即定義為中國大陸地區簡體中文。如果沒有該文件,則會依次尋找MessagesBundle_zh,MessagesBundle,直到找到為止。

發佈留言