Maison >Java >javaDidacticiel >Comment Java gère les fichiers de ressources de propriétés

Comment Java gère les fichiers de ressources de propriétés

PHPz
PHPzavant
2023-04-28 14:19:061170parcourir

Dans le langage Java, un fichier texte avec une extension .properties est utilisé comme fichier de ressources. Le format de contenu de ce type de fichier est similaire à :

#Instruction de commentaire #🎜🎜. # some_key=some_value

formulaire. Les lignes commençant par # sont utilisées comme lignes de commentaires et seront ignorées lors du traitement par la classe ResourceBundle ; les lignes restantes peuvent être décrites sous la forme de nom de clé=valeur.

La classe ResourceBundle de Java peut traiter des fichiers sous cette forme.

L'utilisation de la classe ResourceBundle est également très simple. Utilisons un exemple pour illustrer.

Nous supposons qu'il existe les 2 fichiers de propriétés suivants :

TestProperties.properties   view plainprint?  #key=value     userIdLabel=User Id:      userNameLabel=User Name:     #key=value userIdLabel=User Id:   userNameLabel=User Name:   TestProperties_zh_CN.properties   view plainprint?  #key=value     userIdLabel=用户ID:      userNameLabel=用户名:     #key=value userIdLabel=用户ID:   userNameLabel=用户名:
Vous remarquerez peut-être qu'il y a un nom _zh_CN dans le nom du fichier TestProperties_zh_CN.properties, qui est en fait utilisé pour traitement de localisation des fichiers de ressources. Qu’est-ce que la localisation ? Expliquons brièvement : lorsque nous développons le système, nous devons souvent préparer différentes interfaces pour les utilisateurs de différentes régions. Par exemple, si un système s'adresse à la fois aux utilisateurs anglophones et aux utilisateurs chinois, nous devons préparer 2 ensembles d'interfaces pour. Le système. L'interface (y compris les messages), un ensemble est une interface anglaise et l'autre est une interface chinoise. Bien entendu, hormis les différentes interfaces, les processus du système sont exactement les mêmes. Bien sûr, il nous est impossible de développer respectivement deux systèmes différents. Que devons-nous faire ? Cela nécessite la localisation des ressources. En d’autres termes, différents fichiers de ressources sont préparés en fonction de la région ou de la langue de l’utilisateur, de sorte que différentes interfaces peuvent être préparées pour différents utilisateurs tout en utilisant le même ensemble de logique système.

Les deux fichiers ci-dessus sont deux ensembles de ressources différents.

Nous utilisons la classe ResourceBundle pour traiter le code des différentes ressources :

TestProperties.java   view plainprint?  package com.test.properties;          import java.util.Enumeration;     import java.util.Locale;     import java.util.ResourceBundle;          public class TestProperties  {              public static void main(String []args) {     String resourceFile = "com.test.properties.TestProperties";     //创建一个默认的ResourceBundle对象     //ResourceBundle会查找包com.test.properties下的TestProperties.properties的文件     //com.test.properties是资源的包名,它跟普通java类的命名规则完全一样:     //- 区分大小写     //- 扩展名 .properties 省略。就像对于类可以省略掉 .class扩展名一样     //- 资源文件必须位于指定包的路径之下(位于所指定的classpath中)     //另外,对于非西欧字符(比如中日韩文等),需要使用native2ascii命令或类似工具将其转换成ascii码文件格式,否则会显示乱码。     System.out.println("---Default Locale---");     ResourceBundle resource = ResourceBundle.getBundle(resourceFile);          testResourceBundle(resource);          System.out.println("---Locale.SIMPLIFIED_CHINESE---");          //创建一个指定Locale(本地化)的ResourceBundle对象,这里指定为Locale.SIMPLIFIED_CHINESE     //所以ResourceBundle会查找com.test.properties.TestProperties_zh_CN.properties的文件     //     //中文相关的Locale有:     //Locale.SIMPLIFIED_CHINESE : zh_CN     resource = ResourceBundle.getBundle(resourceFile, Locale.SIMPLIFIED_CHINESE);     //Locale.CHINA  : zh_CN     //Locale.CHINESE: zh     testResourceBundle(resource);          //显示     //         }                  private static void testResourceBundle(ResourceBundle resource) {     //取得指定关键字的value值     String userIdLabel = resource.getString("userIdLabel");     System.out.println(userIdLabel);          //取得所有key值     Enumeration enu = resource.getKeys();          System.out.println("keys:");     while(enu.hasMoreElements()) {         System.out.println(enu.nextElement());     }         }     }     package com.test.properties;   import java.util.Enumeration;  import java.util.Locale;  import java.util.ResourceBundle;   public class TestProperties  {       public static void main(String []args) {  String resourceFile = "com.test.properties.TestProperties";  //创建一个默认的ResourceBundle对象  //ResourceBundle会查找包com.test.properties下的TestProperties.properties的文件  //com.test.properties是资源的包名,它跟普通java类的命名规则完全一样:  //- 区分大小写  //- 扩展名 .properties 省略。就像对于类可以省略掉 .class扩展名一样  //- 资源文件必须位于指定包的路径之下(位于所指定的classpath中)  //另外,对于非西欧字符(比如中日韩文等),需要使用native2ascii命令或类似工具将其转换成ascii码文件格式,否则会显示乱码。  System.out.println("---Default Locale---");  ResourceBundle resource = ResourceBundle.getBundle(resourceFile);   testResourceBundle(resource);   System.out.println("---Locale.SIMPLIFIED_CHINESE---");   //创建一个指定Locale(本地化)的ResourceBundle对象,这里指定为Locale.SIMPLIFIED_CHINESE  //所以ResourceBundle会查找com.test.properties.TestProperties_zh_CN.properties的文件  //  //中文相关的Locale有:  //Locale.SIMPLIFIED_CHINESE : zh_CN  resource = ResourceBundle.getBundle(resourceFile, Locale.SIMPLIFIED_CHINESE);  //Locale.CHINA  : zh_CN  //Locale.CHINESE: zh  testResourceBundle(resource);   //显示  //      }            private static void testResourceBundle(ResourceBundle resource) {  //取得指定关键字的value值  String userIdLabel = resource.getString("userIdLabel");  System.out.println(userIdLabel);   //取得所有key值  Enumeration enu = resource.getKeys();   System.out.println("keys:");  while(enu.hasMoreElements()) {      System.out.println(enu.nextElement());  }      }  }
Explication :

1, pour faciliter la compréhension, nous mettons le explication en Java Le code source est là, je n'entrerai donc pas dans les détails ici.

2. Pour le fichier de ressources chinois TestProperties_zh_CN.properties, vous devez utiliser la commande native2ascii pour le convertir en code ascii. Par exemple :

native2ascii -encoding UTF-8 c:TestProperties_zh_CN.properties c:javacomtestpropertiesTestProperties_zh_CN.properties

Quant à l'utilisation détaillée de native2ascii, je n'entrerai pas dans les détails ici .

3. Enregistrez les trois fichiers ci-dessus dans le répertoire c:javacomtestproperties. Parmi eux, TestProperties_zh_CN.properties est un fichier converti par native2ascii.

4, compilez et exécutez, il sera affiché à l'écran :

c:javajavac com.test.properties.TestProperties.java

c: javajava com.test.properties.TestProperties

---Locale par défaut---
User Id:
keys:
userNameLabel
userIdLabel
- -- Locale.SIMPLIFIED_CHINESE---
User ID:
keys:
userNameLabel
userIdLabel

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer