属性文件操作:Properties和ResourceBundle
前言
最近在看gitee上的一个java项目的时候,看到了坐着写的一个工具类,有一些疑问,看了网上的资料以后,在这里记录一下.
正文
1. Properties与ResourceBundle
这两个类都可以读取属性文件中以key/value形式存储的键值对,ResourceBundle读取属性文件时,操作相对简单.
2. Properies
该类继承Hashtable,将键值对存储在集合中.基于输入流从属性文件中读取键值对,load()
方法调用完毕,就与输入流脱离关系,不会自动关闭输入流了,需要我们手动关闭.
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("e:/ConfigFile/app.properties");
Properties p = new Properties();
p.load(fis);
fis.close();
System.out.println(p.getProperty("AccessTokenPubKeyPath"));
}
如此,就可以读出指定目录下的属性文件中的值.
3. ResourceBundl
该类基于类读取属性文件:将属性文件当做类,会在资源文件夹目录下寻找对应的属性文件,也可以将文件放在包中,使用属性文件的全限定类名指代该文件.
public static void main(String[] args) throws Exception {
ResourceBundle resourceBundle = ResourceBundle.getBundle("app");
System.out.println(resourceBundle.getString("token"));
}
以上代码会读取resources目录下的app.properties来获取其中的token
属性.
ResourceBundle其他使用
除了读取属性文件,我们还主要用该类来解决国际化和本地化的问题.
具体的使用可以参考:国际化和本地化
总结
这样看来,如果是读取项目路径下的配置文件,使用ResourceBundle是比较方便的,如果是使用外部文件的话,使用Properties来加载更合适一点.