• properties文件加载的六种方法


    加载项目properties文件的六种方法,其中四种都是通过Properties类加载inputStream读取,后两种通过ResourcesBundle类和其子类来加载

        /**
         * 通过inputStream加载配置文件到properties对象
         */
    
        private void getPropertiesByInputStream_One() throws IOException {
            //全路径
            String path = "/Users/grahamliu/idea-workspace/AppiumAIDemo/src/main/resources/appium.properties";
            Properties properties = new Properties();
    
            InputStream inputStream = new BufferedInputStream(new FileInputStream(path));
            properties.load(inputStream);
    
            System.out.println(this.getClass().getName()+"+"+Thread.currentThread().getStackTrace()[1].getMethodName());
    
            System.out.println(properties.getProperty("appiumUrl"));
        }
    
        /**
         * 通过class类getResourceAsStream方法加载配置文件流
         */
        private void getPropertiesByInputStream_Two() throws IOException {
            //路径/开头,表示从classpath下取路径
    //        String path = "/appium.properties";
            //路径不为/开头,从当前类所在包下取
            String path = "appiumRelative.properties";
    
            Properties properties = new Properties();
            InputStream inputStream = this.getClass().getResourceAsStream(path);
            properties.load(inputStream);
    
            System.out.println(this.getClass().getName()+"+"+Thread.currentThread().getStackTrace()[1].getMethodName());
    
            System.out.println(properties.getProperty("appiumUrl"));
        }
    
        /**
         *通过class的类加载器getClassLoader加载配置
         */
        private void getPropertiesByInputStream_Three() throws IOException{
            //getClassLoader默认加载路径就是classpath,规定不需要用/开头文件路径
            String path = "appium.properties";
    
            Properties properties= new Properties();
            InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(path);
            properties.load(inputStream);
    
            System.out.println(this.getClass().getName()+"+"+Thread.currentThread().getStackTrace()[1].getMethodName());
    
            System.out.println(properties.getProperty("appiumUrl"));
        }
    
        /**
         * 通过ClassLoader类静态方法加载
    * 2020.11.3 最新经验,该方法可能在web项目,或者mvn -exec:运行时读取不到配置文件,需要用上面的方法
    */ private void getPropertiesByInputStream_Four() throws IOException{ //ClassLoader默认加载路径就是classpath,规定不需要用/开头文件路径 String path = "appium.properties"; Properties properties = new Properties(); InputStream inputStream = ClassLoader.getSystemResourceAsStream(path); properties.load(inputStream); System.out.println(this.getClass().getName()+"+"+Thread.currentThread().getStackTrace()[1].getMethodName()); System.out.println(properties.getProperty("appiumUrl")); } /** * 通过ResourceBundle的构造方法getBundle */ private void getPropertiesByResourceBundle_Five(){ //这个getBundle()方法的参数相对同目录路径,并去掉.properties后缀,否则将抛异常 String path = "appium"; ResourceBundle resourceBundle = ResourceBundle.getBundle(path); System.out.println(this.getClass().getName()+"+"+Thread.currentThread().getStackTrace()[1].getMethodName()); System.out.println(resourceBundle.getString("appiumUrl")); } /** * 通过ResourceBundle子类PropertyResourceBundle加载inputStream */ private void getPropertiesByResourceBundle_Six() throws IOException{ String path = "/Users/grahamliu/idea-workspace/AppiumAIDemo/src/main/resources/appium.properties"; InputStream inputStream = new BufferedInputStream(new FileInputStream(path)); ResourceBundle resourceBundle = new PropertyResourceBundle(inputStream); System.out.println(this.getClass().getName()+"+"+Thread.currentThread().getStackTrace()[1].getMethodName()); System.out.println(resourceBundle.getString("appiumUrl")); }
  • 相关阅读:
    Method of Four Russians 学习笔记
    一道不知道哪里来的数论题
    ICPC2021银川 游记
    决策单调性优化dp学习笔记
    浅谈如何优美地实现线段树?
    2021 EC Final 2020 题解
    5.5 SYSU校内训练
    5.4 SYSU校内训练
    存储相关招聘信息-长期
    screen几个使用方法
  • 原文地址:https://www.cnblogs.com/u1s1/p/12425562.html
Copyright © 2020-2023  润新知