Java ResourceBundle 工具类

目录

  • ResourceBundle 工具类
    • 1. ResourceBundle 类对象的创建
    • 2. ResourceBundle 读取配置文件操作
    • 3. ResourceBundle 读取多语言文本


ResourceBundle 工具类

  • 工具类 Properties 能够读取资源文件,而当资源文件是以 .properties 结尾的文件时,可以使用 JDK 提供的另外一个工具类 ResourceBundle 来对文件进行读取,使得操作更加简单;
  • Properties 是一个抽象类,我们可以使用它的子类 PropertyResourceBundle 来读取以 .properties 结尾的配置文件;
  • java.util.ResourceBundle,详见:Class ResourceBundle;

1. ResourceBundle 类对象的创建

  • 在 ResourceBundle 类中提供了一个静态方法,用于获得它的子类对象(抽象类不能创建对象):
// 使用指定的基本名称,默认语言环境和调用者的类加载器获取资源包。
static ResourceBundle getBundle(String baseName);
  • .properties 配置文件需要放置在类的根路径 src 下面;
  • 给定参数只需要配置文件的名称,不要扩展名;
    Java ResourceBundle 工具类_第1张图片
import java.util.ResourceBundle;

public class Test {
    public static void main(String[] args) {
        //获得ResourceBundle类的对象
        ResourceBundle bundle = ResourceBundle.getBundle("data");//父类引用指向子类对象(多态)
        System.out.println(bundle);
    }
}
/*
输出
java.util.PropertyResourceBundle@4dd8dc3
 */

2. ResourceBundle 读取配置文件操作

  • ResourceBundle 类提供了一个 getString(String key) 方法用于读取配置文件中指定 key 的值:
//从此资源束或其父项之一获取给定密钥的字符串
String getString(String key) 

Java ResourceBundle 工具类_第2张图片

import java.util.ResourceBundle;
public class Test {
    public static void main(String[] args) {
        //获得ResourceBundle类的对象
        ResourceBundle bundle = ResourceBundle.getBundle("data");
        System.out.println(bundle);
        //读取指定key(username)的值
        String username = bundle.getString("username");
        System.out.println(username);
        //读取指定key(password)的值
        String password = bundle.getString("password");
        System.out.println(password);
    }
}
/*
输出
java.util.PropertyResourceBundle@214c265e
Regino
MyPassword
 */

3. ResourceBundle 读取多语言文本

Java ResourceBundle 工具类_第3张图片
32
33

import java.util.Locale;
import java.util.ResourceBundle;

public class Test {
    public static void main(String[] args) {
        //ResourceBunble:
        //1.可以快速读取src中的配置文件
        //2.可以做国际化的配置(扩展)
        //软件中:一堆的字符 : 确定、取消、充值 中英字眼,可以使用多个配置文件进行切换..
        //Locale.getDefault(): 拿到当前系统的语言

        //拿中文版
        System.out.println(Locale.getDefault());//这里输出zh_CN,系统会优先读取data_zh_CN,然后读取data_zh
        ResourceBundle rb = ResourceBundle.getBundle("data", Locale.getDefault());
        String name = rb.getString("name");  //getPropertie(String key)
        System.out.println(name);

        //拿英文版
        ResourceBundle rb2 = ResourceBundle.getBundle("data", Locale.ENGLISH);
        String name2 = rb2.getString("name");  //getPropertie(String key)
        System.out.println(name2);
    }
}
/*
输出
zh_CN
中文
eng
 */

推荐阅读:Java Properties 属性集合 >>>

你可能感兴趣的:(Java)