java如何简单高效读取properties文件?一个静态代码块解决!

一、背景介绍

    在使用Java+Maven+Selenium+Tesng+Jedis+Jenkins做WebUI自动化测试过程中,由于常用的配置数据可能会变化,所以将常见的的数据以键值对的形式存储在properties文件中。
    然后封装一个properties文件内容获取工具类,后续需要相关数据时,直接通过调用相关方法读取相关值即可。properties文件格式如下:键=值

driver.chromeDriverLinux=drivers/chromedriver
driver.chromeDriver=drivers/chromedriver80.exe
/**省略文本**/

二、实现逻辑

在这里插入图片描述

三、实现代码

public class PropertyReader {
		/*创建Properties类的对象*/
    private static Properties properties;

    /**
     * 使用static静态代码块读取properties文件,并将将文件内容保存在static属性中
     * 高效方便,一次加载,多次使用
     * */
    static{
        loadProps();
    }

    /**
     * 用于加载properties文件
     * 并将properties文件内容加载到定义的properties对象中
     */
    synchronized static private void loadProps(){
        System.out.println("开始加载properties文件内容.......");
        properties = new Properties();
        BufferedReader bufferedReader=null;
        try {
        		/*创建字符缓存流,路径为当前项目路径下的文件*/
            bufferedReader=new BufferedReader(
                    new InputStreamReader(
                            new FileInputStream(
                                    "src/test/resources/config/config.properties")
                            ,"UTF-8"));
            /*使用load方法加载properties文件中的内容到properties对象中*/
            properties.load(bufferedReader);
        } catch (FileNotFoundException e) {
            System.err.println("properties文件未找到");
        } catch (IOException e) {
            System.err.println("出现IOException");
        } finally {
            try {
                if(null != bufferedReader) {
                    bufferedReader.close();
                }
            } catch (IOException e) {
                System.err.println("properties文件流关闭出现异常");
            }
        }
        System.out.println("加载properties文件内容完成.......");
        System.out.println("properties文件内容:"+properties);
    }

    /**
     * 获取指定key的值,若key不存在,则返回null
     * @param key key的值
     * @return 返回属性值
     */
    public static String getProperty(String key){
        if(null == properties) {
            loadProps();
        }
        return properties.getProperty(key);
    }

    /**
     * 获取指定key的值,若获取不到,则返回默认值
     * @param key key的值
     * @param defaultValue 默认值
     * @return 返回属性值
     */
    public static String getProperty(String key, String defaultValue) {
        if(null == properties) {
            loadProps();
        }
        return properties.getProperty(key, defaultValue);
    }

    public static void main(String[] args) {
        System.out.println(getProperty("redis.ip"));
        System.out.println(getProperty("a","默认值"));
    }
}

猜你喜欢

转载自blog.csdn.net/qq_37688023/article/details/105925625