ResourceBundle和properties 讀取配置文件區別

ava.util.ResourceBundle 和java.util.properties 讀取配置文件區別java

 

這兩個類都是讀取properties格式的文件的,而Properties同時還能用來寫文件。 
  
  Properties的處理方式是將其做爲一個映射表,並且這個類表示了一個持久的屬性集,他是繼承HashTable這個類。ResourceBundle本質上也是一個映射,可是它提供了國際化的功能。 
  
  假設電腦設置的地區是中國大陸,語言是中文 
  
  那麼你向ResourceBundle(資源約束名稱爲base)獲取abc變量的值的時候,ResourceBundle會前後搜索 
  base_zh_CN_abc.properties 
  base_zh_CN.properties 
  base_zh.properties 
  base.properties 
  文件,直到找到abc爲止 
  
  相應的,在英國就會去找base_en_GB_abc.properties等。 
  
  所以,你只須要提供不一樣語言的資源文件,而無需改變代碼,就達到了國際化的目的。 
  
  另外,在.properties裏面,不能直接使用中文之類文字,而是要經過native2ascii轉乘\uxxxx這種形式

   附: 編碼

   1.編碼問題:spa

不管系統的默認編碼是什麼,ResourceBundle在讀 取properties文件時統一使用iso8859-1編碼。所以,若是在默認編碼爲 GBK的系統中編寫了包含中文的properties文件,經由ResourceBundle讀入時,必須轉換爲GBK格式的編碼,不然不能正確識別。xml

   2.用法:繼承

ResourceBundle:ci

ResourceBundle conf= ResourceBundle.getBundle("config/fnconfig/fnlogin");資源

String value= conf.getString("key");get

 

Properties:it

Properties prop = new Properties();io

try { InputStream is = getClass().getResourceAsStream("xmlPath.properties");

prop.load(is);

//或者直接prop.load(new FileInputStream("c:/xmlPath.properties"));

if (is != null) { is.close();

} } catch (Exception e) { System.out.println( "file " + "catalogPath.properties" + " not found!\n" + e); } String value= prop.getProperty("key").toString();

相關文章
相關標籤/搜索