Rumah > Java > javaTutorial > teks badan

Cara Java mengendalikan fail sumber sifat

PHPz
Lepaskan: 2023-04-28 14:19:06
ke hadapan
1149 orang telah melayarinya

Dalam bahasa Java, fail teks dengan sambungan .properties digunakan sebagai fail sumber Format kandungan fail jenis ini adalah serupa dengan:

#Pernyataan komen
some_key=some_value.

borang. Baris yang bermula dengan # digunakan sebagai baris ulasan dan akan diabaikan apabila diproses oleh kelas ResourceBundle, baris yang selebihnya boleh diterangkan dalam bentuk nama kunci=nilai.

Kelas ResourceBundle Java boleh memproses fail dalam borang ini.

Kelas ResourceBundle juga sangat mudah untuk digunakan. Mari kita gunakan contoh untuk menggambarkan.

Kami menganggap bahawa terdapat 2 fail sifat berikut:

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=用户名:
Salin selepas log masuk

Anda mungkin perasan bahawa terdapat nama _zh_CN dalam nama fail TestProperties_zh_CN.properties, yang sebenarnya digunakan untuk penyetempatan fail sumber . Apakah penyetempatan? Mari kita terangkan secara ringkas: Apabila kami membangunkan sistem, kami selalunya perlu menyediakan antara muka yang berbeza untuk pengguna di wilayah yang berbeza Contohnya, jika sistem disasarkan kepada pengguna berbahasa Inggeris dan pengguna Cina, kami mesti menyediakan 2 set untuk sistem. . Antara muka (termasuk mesej), satu set ialah antara muka bahasa Inggeris dan satu lagi ialah antara muka bahasa Cina. Sudah tentu, selain daripada antara muka yang berbeza, proses sistem adalah sama. Sudah tentu, adalah mustahil untuk kita membangunkan dua sistem yang berbeza untuk mereka masing-masing. Ini memerlukan penyetempatan sumber. Dalam erti kata lain, fail sumber yang berbeza disediakan mengikut rantau atau bahasa pengguna, supaya antara muka yang berbeza boleh disediakan untuk pengguna yang berbeza tetapi set logik sistem yang sama digunakan.

Dua fail di atas ialah dua set sumber yang berbeza.

Kami menggunakan kelas ResourceBundle untuk memproses kod sumber yang berbeza:

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());  }      }  }
Salin selepas log masuk

Penjelasan:

1. Untuk memudahkan pemahaman, kami meletakkan penjelasan dalam sumber Java kod, di sini Tiada butiran lanjut.

2. Untuk fail sumber Cina TestProperties_zh_CN.properties, anda perlu menggunakan perintah native2ascii untuk menukarnya kepada kod ascii. Contohnya:

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

Mengenai penggunaan terperinci native2ascii, saya tidak akan menerangkan butiran di sini.

3. Simpan tiga fail di atas dalam direktori c:javacomtestproperties. Antaranya, TestProperties_zh_CN.properties ialah fail yang ditukar oleh native2ascii.

4, susun dan laksanakan, ia akan dipaparkan pada skrin:

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

c:javajava com.test .properties .TestProperties
---Locale Default---
Id Pengguna:
keys:
userNameLabel
userIdLabel
---Locale.SIMPLIFIED_CHINESE-->🎜 ID:
kunci:
userNameLabel
userIdLabel

Atas ialah kandungan terperinci Cara Java mengendalikan fail sumber sifat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan