一、使用Properties类读取配置文件
Properties props = new Properties();
// 初始化Properties
InputStream in = null;
try {
// 使用ClassLoader加载输入流
in = ResourceUtil.class.getClassLoader().getResourceAsStream("application.properties");
props.load(in);
} catch (IOException e) {
}finally {
try {
if(in != null)
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
二、使用ResourceBundle 类读取配置文件
ResourceBundle resource = ResourceBundle.getBundle("application");
三、实例
- 项目目录,
application_zh_CN.properties文件下有:test= zh_CN
application_en_US.properties文件下有:test= 123
application.properties文件下有:test= 123
- ResourceUtil的代码如下:
package com.example.springbootdemo; import java.io.IOException; import java.io.InputStream; import java.util.Locale; import java.util.Properties; import java.util.ResourceBundle; public class ResourceUtil { // 1、方法一:Properties + 输入流(getResourceAsStream) private static Properties props = new Properties(); static { // 初始化Properties InputStream in = null; try { // 使用ClassLoader加载输入流 in = ResourceUtil.class.getClassLoader().getResourceAsStream("application.properties"); props.load(in); } catch (IOException e) { e.printStackTrace(); }finally { try { if(in != null) in.close(); } catch (IOException e) { e.printStackTrace(); } } } // 2、方法二:ResourceBundle(更方便,推荐),初始化失败会报错 private static ResourceBundle resource; private static ResourceBundle resource_zh; static { // 注意:这种方法不需要写文件的后缀 // 1、获取以application_xx为前缀的文件,其中xx为本地的语言,如当前为zh(中文) resource = ResourceBundle.getBundle("application"); // 2、获取application_zh_CN.properties文件 Locale local = new Locale("en", "US"); // en resource_zh = ResourceBundle.getBundle("application", local); System.out.println(); } public static void main(String[] args) { System.out.println("props :" + props.getProperty("test")); System.out.println("resource :" + resource.getString("test")); System.out.println("resource_zh :" + resource_zh.getString("test")); } }
运行结果如下: