在开发和测试环境中,很容易混淆如何获取不同位置的配置文件。为了避免重复造轮子,在此记录一下自己的解决方案:
可以提出如下设想:
1、在开发环境下,读取resources下的config.properties文件
2、在生产环境下,读取jar文件同级目录下的config.properties文件,如果没有该config.properties文件,则读取jar包中的config.properties
1 public class ConfigUtils { 2 /** 3 * 根据配置文件中的内容获取配置信息内容 4 * @param property 配置的属性 5 * @return 配置属性值 6 * @throws IOException 7 */ 8 public static String getProperty(String property) throws IOException { 9 Properties properties = new Properties(); 10 InputStream inputStream = null; 11 // 获取.jar文件同级目录下,config.properties文件的绝对路径 12 String configFilePath = System.getProperty("user.dir") + File.separator + "config.properties"; 13 // 如果在.jar文件同级目录下,config.properties文件存在,则使用该文件作为配置文件 14 if (new File(configFilePath).exists()) { 15 inputStream = new BufferedInputStream(new FileInputStream(configFilePath)); 16 } else { 17 //如果在.jar文件同级目录下,config.properties文件不存在,则使用.jar文件中的config.properties文件作为配置文件 18 inputStream = ConfigUtils.class.getClassLoader().getResourceAsStream("config.properties"); 19 } 20 properties.load(inputStream); 21 String value = properties.getProperty(property); 22 return value; 23 } 24 }