Java 言語では、.properties 拡張子の付いたテキスト ファイルがリソース ファイルとして使用されます。このタイプのファイルのコンテンツ形式は次のようになります:
#コメント ステートメント
some_key=some_value # #####形状。 # で始まる行はコメント行として使用され、ResourceBundle クラスの処理では無視されますが、残りの行はキー名=値の形式で記述できます。
Java の ResourceBundle クラスは、この形式のファイルを処理できます。
ResourceBundle クラスの使用も非常に簡単です。例を使って説明しましょう。
次の 2 つのプロパティ ファイルがあると仮定します:
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=用户名:
TestProperties_zh_CN.properties ファイル名に _zh_CN という名前があることに気づくかもしれませんが、これは実際にリソース ファイルのローカライズに使用されます。 . .ローカリゼーションとは何ですか?簡単に説明すると、システムを開発する際には、地域ごとに異なるインターフェースを用意する必要があることがよくあります。システムのインターフェース (メッセージを含む) は、英語インターフェースと中国語インターフェースです。もちろん、インターフェイスの違いを除けば、システム プロセスはまったく同じです。もちろん、それぞれに異なるシステムを開発することは不可能です。これにはリソースのローカライゼーションが必要です。言い換えれば、ユーザーの地域や言語に応じて異なるリソース ファイルが用意されるため、ユーザーごとに異なるインターフェースを用意することができますが、同じシステム ロジックが使用されます。
上記の 2 つのファイルは、2 つの異なるリソース セットです。
ResourceBundle クラスを使用して、さまざまなリソースのコードを処理します:
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()); } } }
説明:
1、理解を容易にするために、説明を Java ソース コードに含めます。 , こちら 詳細は不要です。
2. 中国語のリソース ファイル TestProperties_zh_CN.properties の場合は、native2ascii コマンドを使用して 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はnative2asciiで変換したファイルです。
4、コンパイルして実行すると、画面に次のように表示されます:
c:\java\javac com.test.properties.TestProperties.java
c:\ java\ java com.test.properties.TestProperties
---デフォルトのロケール---ユーザーID:
keys:
userNameLabel
userIdLabel
---Locale.SIMPLIFIED_CHINESE- --
ユーザー ID:
keys:
userNameLabel
userIdLabel
以上がJava がプロパティ リソース ファイルを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。