ResourceBundle
使用ResourceBundle訪問本地資源
在設計時,我們往往需要訪問一些適合本地修改的配置信息,如果作為靜態變量,那么每次修改都需要重新編譯一個class,.config保存此類信息并不適合,這時我們需要ResourceBundle。
通過ResourceBundle,我們需要訪問位于/WEB-INF/classes目錄下的一個后綴名為properties的文本類型文件,從里面讀取我們需要的值。
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實例化為new Locale("zh","CN");
通過ResourceBundle.getBundle("MessagesBundle", locale);
系統將自動尋找MessagesBundle_zh_CN,即定義為中國大陸地區簡體中文。如果沒有該文件,則會依次尋找MessagesBundle_zh,MessagesBundle,直到找到為止。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
代碼:
import java.util.Locale;
import java.util.ResourceBundle;
public class LocaleTest {
public static void main(String[] args)
{
Locale localeCN = new Locale("zh","CN");
Locale localeJP = new Locale("co","JP");
ResourceBundle localResourceCN = ResourceBundle.getBundle("ConnResource", localeCN);
String valueCN = localResourceCN.getString("test");
System.out.println("ResourceBundle: " + valueCN);
ResourceBundle localResourceJP = ResourceBundle.getBundle("ConnResource", localeJP);
String valueJP = localResourceJP.getString("test");
System.out.println("ResourceBundle: " + valueJP);
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
文件內容:
ConnResource_co_JP.properties:
test=hello japan
ConnResource_zh_CN.properties:
test=hello china