JAVA讀取屬性文件的幾種方法

jopen 12年前發布 | 27K 次閱讀 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,直到找到為止。

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