ResourceBundle 工具类
- 工具类 Properties 能够读取资源文件,而当资源文件是以 .properties 结尾的文件时,可以使用 JDK 提供的另外一个工具类 ResourceBundle 来对文件进行读取,使得操作更加简单;
- Properties 是一个抽象类,我们可以使用它的子类 PropertyResourceBundle 来读取以 .properties 结尾的配置文件;
- java.util.ResourceBundle,详见:Class ResourceBundle;
1. ResourceBundle 类对象的创建
- 在 ResourceBundle 类中提供了一个静态方法,用于获得它的子类对象(抽象类不能创建对象):
// 使用指定的基本名称,默认语言环境和调用者的类加载器获取资源包。
static ResourceBundle getBundle(String baseName);
- .properties 配置文件需要放置在类的根路径 src 下面;
- 给定参数只需要配置文件的名称,不要扩展名;
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)
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 读取多语言文本
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 属性集合 >>>