• ResourceBundle介绍


    介绍:

    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;

  • 相关阅读:
    c#声明数组
    【游戏物理】欧拉、龙格、韦尔莱
    当const放在function声明后
    【物理】AABB物理碰撞检测
    100 Path Sum
    Loop Unrolling 循环展开
    Unity Shader and Effects Cookbook问题记录
    【ShaderToy】画一个球体
    pymysql
    mysql表间的关系和查询
  • 原文地址:https://www.cnblogs.com/laoxia/p/7954033.html
Copyright © 2020-2023  润新知