開發中,我們經常需要讀取本地文件(properties文件),這樣的好處是文件是動態的,可配置的.這時候我們就需要用到ResourceBundle這個類.
這個類屬於java.util.*.
這個類的好處:
- 輕松本地化並或者翻譯成不同的語言 博主理解:用locale可以選擇文件名相同,但是語言代碼和國別代碼不同的文件.(文件名_語言代碼_國別代碼.properties).
- 文件可以輕松修改
說白了,這個類的作用就是讀取資源屬性文件(properties),然后根據.properties文件的名稱信息(本地化信息),匹配當前系統的國別語言信息(也可以程序指定),然后獲取相應的properties文件的內容。
要注意的一點是,這個properties文件的名字是有規范的:一般的命名規范是: 自定義名_語言代碼_國別代碼.properties,
1 home=\u9759\u6D77 //因為默認是ISO-8859-1 2 game=\u4E5D\u9634
today_zh_CN.properties
1 game=LOL 2 people=\u6211\u4EEC
today_en_US.properties
1 ### www 2 today = \u5468\u4E94 3 backhome = \u54C8\u54C8\u54C8

2..如果設置locale為"zh,CN",是默認讀取,默認讀取順序是: today_zh_CN.properties--------today.properties
3.如果設置locale為"en,US",是默認讀取,默認讀取順序是: today_en_US.properties--------today_zh_CN.properties----------today.properties
但是不知道為什么輸出的是亂碼,查了很多資料都嘗試了也不行,如果有大佬知道請告訴我.
這是我對ResourceBundle讀取資源文件(proterties)的一些理解,如果你有更好的理解或者我有錯誤請及時告訴我,謝啦.
補充:
Java中的getResourceAsStream有以下幾種:
1. Class.getResourceAsStream(String path) : path 不以’/'開頭時默認是從此類所在的包下取資源,以’/'開頭則是從ClassPath根下獲取。其只是通過path構造一個絕對路徑,最終還是由ClassLoader獲取資源。
2. Class.getClassLoader.getResourceAsStream(String path) :默認則是從ClassPath根下獲取,path不能以’/'開頭,最終是由ClassLoader獲取資源。
3. ServletContext. getResourceAsStream(String path):默認從WebAPP根目錄下取資源,Tomcat下path是否以’/'開頭無所謂,當然這和具體的容器實現有關。
4. Jsp下的application內置對象就是上面的ServletContext的一種實現。
getResourceAsStream 用法大致有以下幾種:
第一: 要加載的文件和.class文件在同一目錄下,例如:com.x.y 下有類me.class ,同時有資源文件myfile.xml
那么,應該有如下代碼:
me.class.getResourceAsStream("myfile.xml");
第二:在me.class目錄的子目錄下,例如:com.x.y 下有類me.class ,同時在 com.x.y.file 目錄下有資源文件myfile.xml
那么,應該有如下代碼:
me.class.getResourceAsStream("file/myfile.xml");
第三:不在me.class目錄下,也不在子目錄下,例如:com.x.y 下有類me.class ,同時在 com.x.file 目錄下有資源文件myfile.xml
那么,應該有如下代碼:
me.class.getResourceAsStream("/com/x/file/myfile.xml");
總結一下,可能只是兩種寫法
第一:前面有 “ / ”
“ / ”代表了工程的根目錄,例如工程名叫做myproject,“ / ”代表了myproject
me.class.getResourceAsStream("/com/x/file/myfile.xml");
第二:前面沒有 “ / ”
代表當前類的目錄
me.class.getResourceAsStream("myfile.xml");
me.class.getResourceAsStream("file/myfile.xml");
最后,自己的理解:
getResourceAsStream讀取的文件路徑只局限與工程的源文件夾中,包括在工程src根目錄下,以及類包里面任何位置,但是如果配置文件路徑是在除了源文件夾之外的其他文件夾中時,該方法是用不了的。