成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java語言對properties資源文件的處理

開發(fā) 后端
Java語言提供了ResourceBundle類來對properties類型的資源文件加以處理。 本文對ResourceBundle類做一個解說。

開始之前,我們先解釋一下什么是properties類型的資源文件。

在Java語言中,使用一種以.properties為擴展名的文本文件作為資源文件,該類型的文件的內(nèi)容格式為類似:

#注釋語句
some_key=some_value

形式。以#開頭的行作為注釋行,ResourceBundle類處理時會加以忽略;其余的行可以以 key名=value值 的形式加以記述。

Java的ResourceBundle類可以對這種形式的文件加以處理。

ResourceBundle類的使用方法也非常簡單。我們使用一個例子來說明。

我們假設(shè)有下面2個properties文件:

  1. TestProperties.properties  
  2.  
  3. view plainprint?  
  4. #key=value     
  5. userIdLabel=User Id:      
  6. userNameLabel=User Name:     
  7. #key=value 
  8. userIdLabel=User Id:   
  9. userNameLabel=User Name:  
  10.  
  11. TestProperties_zh_CN.properties  
  12.  
  13. view plainprint?  
  14. #key=value     
  15. userIdLabel=用戶ID:      
  16. userNameLabel=用戶名:     
  17. #key=value 
  18. userIdLabel=用戶ID:   
  19. userNameLabel=用戶名: 

大家可能注意到TestProperties_zh_CN.properties文件名中有一個_zh_CN名稱,該名稱其實是用于資源文件的本地化處理。什么是本地化呢?我們簡單說明一下:我們在進行系統(tǒng)開發(fā)時,很多時候需要為不同地區(qū)的用戶準備不同的界面,比如,如果一個系統(tǒng)同時面向 英語圈的用戶以及面向中國的用戶,我們就必須為系統(tǒng)準備2套界面(包括消息),一套為英語界面,一套為中文界面。當(dāng)然,除了界面不同之外,系統(tǒng)的處理過程完全一樣。當(dāng)然我們不可能為它們分別開發(fā)2套不同的系統(tǒng),怎么辦呢?這就需要用到資源的本地化處理。也就是說,根據(jù)用戶所處的地區(qū)或語言的不同,分別準備不同的資源文件,這樣就可以為不同的用戶準備不同的界面但使用的卻是同一套系統(tǒng)邏輯。

我們上面的2個文件就是2套不同的資源。

我們是使用ResourceBundle類處理不同資源的代碼:

  1. TestProperties.java  
  2.  
  3. view plainprint?  
  4. package com.test.properties;     
  5.      
  6. import java.util.Enumeration;     
  7. import java.util.Locale;     
  8. import java.util.ResourceBundle;     
  9.      
  10. public class TestProperties  {     
  11.      
  12.     public static void main(String []args) {     
  13. String resourceFile = "com.test.properties.TestProperties";     
  14. //創(chuàng)建一個默認的ResourceBundle對象     
  15. //ResourceBundle會查找包com.test.properties下的TestProperties.properties的文件     
  16. //com.test.properties是資源的包名,它跟普通java類的命名規(guī)則完全一樣:     
  17. //- 區(qū)分大小寫     
  18. //- 擴展名 .properties 省略。就像對于類可以省略掉 .class擴展名一樣     
  19. //- 資源文件必須位于指定包的路徑之下(位于所指定的classpath中)     
  20. //另外,對于非西歐字符(比如中日韓文等),需要使用native2ascii命令或類似工具將其轉(zhuǎn)換成ascii碼文件格式,否則會顯示亂碼。     
  21. System.out.println("---Default Locale---");     
  22. ResourceBundle resource = ResourceBundle.getBundle(resourceFile);     
  23.      
  24. testResourceBundle(resource);     
  25.      
  26. System.out.println("---Locale.SIMPLIFIED_CHINESE---");     
  27.      
  28. //創(chuàng)建一個指定Locale(本地化)的ResourceBundle對象,這里指定為Locale.SIMPLIFIED_CHINESE     
  29. //所以ResourceBundle會查找com.test.properties.TestProperties_zh_CN.properties的文件     
  30. //     
  31. //中文相關(guān)的Locale有:     
  32. //Locale.SIMPLIFIED_CHINESE : zh_CN     
  33. resource = ResourceBundle.getBundle(resourceFile, Locale.SIMPLIFIED_CHINESE);     
  34. //Locale.CHINA  : zh_CN     
  35. //Locale.CHINESE: zh     
  36. testResourceBundle(resource);     
  37.      
  38. //顯示     
  39. //     
  40.     }     
  41.          
  42.     private static void testResourceBundle(ResourceBundle resource) {     
  43. //取得指定關(guān)鍵字的value值     
  44. String userIdLabel = resource.getString("userIdLabel");     
  45. System.out.println(userIdLabel);     
  46.      
  47. //取得所有key值     
  48. Enumeration enu = resource.getKeys();     
  49.      
  50. System.out.println("keys:");     
  51. while(enu.hasMoreElements()) {     
  52.     System.out.println(enu.nextElement());     
  53. }     
  54.     }     
  55. }     
  56. package com.test.properties;  
  57.  
  58. import java.util.Enumeration;  
  59. import java.util.Locale;  
  60. import java.util.ResourceBundle;  
  61.  
  62. public class TestProperties  {  
  63.  
  64.     public static void main(String []args) {  
  65. String resourceFile = "com.test.properties.TestProperties";  
  66. //創(chuàng)建一個默認的ResourceBundle對象  
  67. //ResourceBundle會查找包com.test.properties下的TestProperties.properties的文件  
  68. //com.test.properties是資源的包名,它跟普通java類的命名規(guī)則完全一樣:  
  69. //- 區(qū)分大小寫  
  70. //- 擴展名 .properties 省略。就像對于類可以省略掉 .class擴展名一樣  
  71. //- 資源文件必須位于指定包的路徑之下(位于所指定的classpath中)  
  72. //另外,對于非西歐字符(比如中日韓文等),需要使用native2ascii命令或類似工具將其轉(zhuǎn)換成ascii碼文件格式,否則會顯示亂碼。  
  73. System.out.println("---Default Locale---");  
  74. ResourceBundle resource = ResourceBundle.getBundle(resourceFile);  
  75.  
  76. testResourceBundle(resource);  
  77.  
  78. System.out.println("---Locale.SIMPLIFIED_CHINESE---");  
  79.  
  80. //創(chuàng)建一個指定Locale(本地化)的ResourceBundle對象,這里指定為Locale.SIMPLIFIED_CHINESE  
  81. //所以ResourceBundle會查找com.test.properties.TestProperties_zh_CN.properties的文件  
  82. //  
  83. //中文相關(guān)的Locale有:  
  84. //Locale.SIMPLIFIED_CHINESE : zh_CN  
  85. resource = ResourceBundle.getBundle(resourceFile, Locale.SIMPLIFIED_CHINESE);  
  86. //Locale.CHINA  : zh_CN  
  87. //Locale.CHINESE: zh  
  88. testResourceBundle(resource);  
  89.  
  90. //顯示  
  91. //  
  92.     }  
  93.       
  94.     private static void testResourceBundle(ResourceBundle resource) {  
  95. //取得指定關(guān)鍵字的value值  
  96. String userIdLabel = resource.getString("userIdLabel");  
  97. System.out.println(userIdLabel);  
  98.  
  99. //取得所有key值  
  100. Enumeration enu = resource.getKeys();  
  101.  
  102. System.out.println("keys:");  
  103. while(enu.hasMoreElements()) {  
  104.     System.out.println(enu.nextElement());  
  105. }  
  106.     }  

解說:

1,為了便于理解,我們把解說放在Java源代碼中了,這里不再詳述了。

2,對于中文資源文件TestProperties_zh_CN.properties,需要使用native2ascii 命令將其轉(zhuǎn)換為ascii碼。例如:

native2ascii -encoding UTF-8 c:\TestProperties_zh_CN.properties c:\java\com\test\properties\TestProperties_zh_CN.properties

至于native2ascii的詳細用法這里不做詳述了。

3,將上面3個文件都保存在 c:\java\com\test\properties\ 目錄下。其中TestProperties_zh_CN.properties為經(jīng)過native2ascii轉(zhuǎn)換后的文件。

4,編譯執(zhí)行,將會在屏幕上顯示:

c:\java\javac com.test.properties.TestProperties.java

c:\java\java com.test.properties.TestProperties
---Default Locale---
User Id:
keys:
userNameLabel
userIdLabel
---Locale.SIMPLIFIED_CHINESE---
用戶ID:
keys:
userNameLabel
userIdLabel

【編輯推薦】

  1. Java連接MySQL中文亂碼處理
  2. 在Java應(yīng)用程序中使用Jfreechart配置
  3. Java虛擬機內(nèi)部構(gòu)成淺析
  4. 淺談Java線程的生命周期
  5. 關(guān)于Java繼承的一些復(fù)習(xí)
責(zé)任編輯:彭凡 來源: CSDN
相關(guān)推薦

2013-06-17 17:02:15

Windows PhoWP開發(fā)資源文件

2009-08-21 16:13:27

C#讀取資源文件

2011-06-20 14:18:27

Qt 資源 文件

2012-02-03 09:55:06

Delphi

2011-08-15 14:47:28

Cocoa嵌入資源文件

2013-07-30 12:30:57

Windows PhoWindows Pho

2009-08-28 16:08:28

C#利用資源文件

2009-06-02 14:21:04

eclipse資源文件eclipse中文

2009-12-28 11:23:38

WPF資源文件

2020-08-25 07:16:20

Python資源文件文件

2010-01-04 16:23:42

Silverlight

2009-10-28 11:27:34

VB.NET資源文件

2009-08-12 16:44:13

.NET文件類型

2010-08-24 16:07:37

C語言

2013-05-15 10:27:05

R語言

2009-06-05 09:40:59

2010-01-15 18:50:25

VB.NET資源文件

2009-06-04 09:26:51

struts 源碼struts 資源文件

2013-05-27 10:58:10

propertiesJava語言

2009-07-09 18:12:53

Servlet源文件
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲黄色高清视频 | 午夜影院官网 | 精品欧美一区二区三区 | 午夜电影一区二区 | 色婷婷综合久久久中字幕精品久久 | 国产精品片aa在线观看 | 日本免费一区二区三区视频 | 欧美福利视频 | 一区二区三区视频播放 | 欧美福利三区 | 国产精品国产精品国产专区不卡 | 欧洲av一区 | 视频一区在线观看 | 国产香蕉视频 | 亚洲精品一区二三区不卡 | 欧美三级电影在线播放 | www久久99 | 亚洲精品日韩视频 | 91精品一区| 奇米久久久 | 精品无码久久久久久国产 | 国产精品久久久久久久久免费桃花 | 欧美日韩国产一区二区三区 | 九九热免费观看 | 亚洲国产一区二区三区在线观看 | 欧美男人天堂 | 午夜码电影 | 日韩中文字幕免费在线观看 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 91精品国产乱码久久久久久 | 男人的天堂中文字幕 | 97精品国产97久久久久久免费 | 亚洲欧美日韩精品久久亚洲区 | 日韩av一区二区在线 | 欧美日韩成人网 | 亚洲va国产日韩欧美精品色婷婷 | 日本不卡视频在线播放 | 国产美女网站 | 亚洲精选一区二区 | 一区二区三区四区在线视频 |