Java中使用ResourceBundle访问资源文件(properties文件)

 

在程序中经常需要使用常量,如果直接写在程序里,改变这些字符串时必须重新编译,例如编写数据库应用的时候数据库驱动程序、URL、用户名和口令等信息,可以使用资源文件(Properties文件),Java中提供了 ResourceBundle类来方便对属性文件的访问。本文介绍如何编写properties文件,如何访问,如何实现国际化。

1、properties文件的编写  

文件的后缀名为.properties。

文件中每一行的格式为:key=value

例如:

database.driver=com.mysql.jdbc.Drvier

database.url=jdbc:mysql://localhost:3306:test

database.user=root

database.pass=root

如果要是使用注释可以使用#,例如:

#如果采用其他数据库,需要修改这些信息

2、使用ResourceBundl解析资源文件

分两步:加载资源文件,然后获取某个特定信息。

2.1 加载资源文件

使用getBundle方法,参数是资源文件的

ResourceBundle resource = ResourceBundle.getBundle("messages");

参数为资源文件的名字,注意不用谢后缀名。

2.2获取资源文件中的信息

使用getString方法,例如要获取上面写的驱动程序,可以使用下面的代码:

String driverName = resource.getString("database.driver");

3、实例

3.1 资源文件

文件名:database.properties

文件内容:

database.driver=com.mysql.jdbc.Drvier
database.url=jdbc:mysql://localhost:3306:test
database.user=root
database.pass=root

3.2 读取资源文件的Java文件

package ch6;

import java.util.ResourceBundle;

public class ResourceBundleTest {

 public static void main(String[] args) {
  ResourceBundle resource = ResourceBundle.getBundle("ch6.database");
  String driverName = resource.getString("database.driver");
  String url = resource.getString("database.url");
  String user = resource.getString("database.user");
  String pass = resource.getString("database.pass");
  
  System.out.println("驱动程序:"+driverName);
  System.out.println("URL:"+driverName);
  System.out.println("用户名:"+driverName);
  System.out.println("口令:"+driverName);
 }
}

3.3 执行结果

驱动程序:com.mysql.jdbc.Drvier
URL:com.mysql.jdbc.Drvier
用户名:com.mysql.jdbc.Drvier
口令:com.mysql.jdbc.Drvier

4、使用Locale设置国家和地区支持国际化

有些应用需要同时支持多国语言,这时候如果为每种语言都开发一套应用将很费力,并且很难维护,好的方法是不用应用中的不用语言表示的信息单独存储在资源文件中,而把不变的逻辑内容保留在应用中,需要的时候从资源文件中加载可变的内容。国际化就是来解决这个问题的。把不同语言的信息写在不同的文件中。根据需要调用相应的文件。

4.1 编写支持多语言的资源文件。

默认文件:message.properties

login.user=Username

login.pass=Password

login.submit=Submit

简体中文:message_zh_CN.properties

login.user=用户名

login.pass=口令

login.submit=提交

注意:中文资源文件需要使用native2ascii处理,转换为Unicode编码。

4.2 调用不同的资源文件

使用ResourceBundle的getBundle方法,第一个参数值资源文件的名字,第二个参数是国家和地区。例如:

ResourceBundle.getBundle("ch6.message", Locale.SIMPLIFIED_CHINESE);

注意:Locale中定义了很多表示不同语言的常量。也可以直接指出地区和语言。

Locale bLocale = new Locale("en", "US");
Locale cLocale = new Locale("en", "GB");

第一个参数是语言代码,第二个参数是国家代码。

语言如下:

Language CodeDescription
deGerman
enEnglish
frFrench
jaJapanese
jwJavanese
koKorean
zhChinese

国家代码如下:

 

Country CodeDescription
CNChina
DEGermany
FRFrance
INIndia
USUnited States

结束!

李绪成 CSDN Blog:http://blog.csdn.net/javaeeteacher
CSDN学生大本营:http://student.csdn.net/space.php?uid=124362
如果喜欢我的文章,就加我为好友:http://student.csdn.net/invite.php?u=124362&c=7be8ba2b6f3b6cc5

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值