ResourceBundle
使用ResourceBundle訪問本地資源
在設(shè)計(jì)時(shí),我們往往需要訪問一些適合本地修改的配置信息,如果作為靜態(tài)變量,那么每次修改都需要重新編譯一個(gè)class,.config保存此類信息并不適合,這時(shí)我們需要ResourceBundle。
通過ResourceBundle,我們需要訪問位于/WEB-INF/classes目錄下的一個(gè)后綴名為properties的文本類型文件,從里面讀取我們需要的值。
Locale locale = Locale.getDefault();
ResourceBundle localResource = ResourceBundle.getBundle("ConnResource", locale);
String value = localResource.getString("test");
System.out.println("ResourceBundle: " + value);
這里對(duì)應(yīng)了/WEB-INF/class/ConnResource.properties文件內(nèi)容為:
test=hello world
打印出來的結(jié)果就是hello world
請(qǐng)注意,這里我們可以利用Locale和ResourceBundle的這個(gè)組合創(chuàng)建國(guó)際化的java程序。我們可以把locale實(shí)例化為new Locale("zh","CN");
通過ResourceBundle.getBundle("MessagesBundle", locale);
系統(tǒng)將自動(dòng)尋找MessagesBundle_zh_CN,即定義為中國(guó)大陸地區(qū)簡(jiǎn)體中文。如果沒有該文件,則會(huì)依次尋找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);
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
文件內(nèi)容:
ConnResource_co_JP.properties:
test=hello japan
ConnResource_zh_CN.properties:
test=hello china