介绍:

ResourceBundle类主要作用是读取属性文件,读取属性文件时可以直接指定属性文件的名称(指定名称时不需要文件的后缀),也可以根据Locale所指定的区域码来选取指定的资源文件;

ResourceBundle类的常用方法:

序号

    

    

1

public static final ResourceBundle

 getBundle (String baseName)

取得ResourceBundle的实例,

并指定要操作的资源文件名称

2

public static final ResourceBundle

 getBundle (String baseName,Locale locale)

取得ResourceBundle的实例,

并指定要操作的资源文件名称和区域码

3

public final String getString(String key)

根据key从资源文件

中取出对应的value

Java平台提供了两个ResourceBundle的子类,即ListResourceBundle和PropertyResourceBundle,这为创建资源提供了一种相当简单的方式。ListResourceBundle以键/值对的列表方式管理其资源。PropertyResourceBundle则使用一个属性文件来管理其资源。

         如果需要编写自己的ResourceBundle子类,子类必须重写两个方法:handleGetObjectgetKeys()

getBundle工厂方法创建的资源包实例是默认缓存的,getBundle 客户端可以清除缓存、使用生存时间值管理已缓存资源包实例的生命周期,或者指定不缓存资源包实例。

简单的示例,MyResources继承了ResourceBundle类,代码如下:

public class MyResources extends ResourceBundle { 

    public Object handleGetObject(String key) { 

        if (key.equals(“okKey”)) return “Ok”; 

        if (key.equals(“cancelKey”)) return “Cancel”; 

        return null; 

    } 

    public Enumeration<String> getKeys() { 

        return Collections.enumeration(keySet()); 

    } 

    // Overrides handleKeySet() so that the getKeys() implementation 

    // can rely on the keySet() value. 

    protected Set<String> handleKeySet() { 

        return new HashSet<String>(Arrays.asList(“okKey”, “cancelKey”)); 

    }  

}

Demo:

public static void main(String[] args) {

         ResourceBundle bundle = ResourceBundle.getBundle(“res”, new Locale(“zh”, “CN”));

         String cancel = bundle.getString(“cancelKey”);

         System.out.println(cancel);

                  

         bundle = ResourceBundle.getBundle(“res”, Locale.US);

         cancel = bundle.getString(“cancelKey”);

         System.out.println(cancel);

                  

         bundle = ResourceBundle.getBundle(“res”, Locale.getDefault());

         cancel = bundle.getString(“cancelKey”);

         System.out.println(cancel);

         bundle = ResourceBundle.getBundle(“res”, Locale.GERMAN);

         cancel = bundle.getString(“cancelKey”);

         System.out.println(cancel);

}

         新建资源文件:res_zh_CN.properties

在文件中输入内容:cancelKey=u53D6u6D88(取消),运行程序即可正确输出结果;

此处的ResourceBundle是用于读取和写入属性资源的,因此具体的实现类是ResourceBundle的子类PropertyResourceBundle;