ホームページ  >  記事  >  Java  >  Java がプロパティ リソース ファイルを処理する方法

Java がプロパティ リソース ファイルを処理する方法

PHPz
PHPz転載
2023-04-28 14:19:061083ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。