Maison >Java >javaDidacticiel >Comment Java gère les fichiers de ressources de propriétés
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
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.propertiesQuant à 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!