加载项目properties文件的六种方法,其中四种都是通过Properties类加载inputStream读取,后两种通过ResourcesBundle类和其子类来加载
/*** 通过inputStream加载配置文件到properties对象 */ private void getPropertiesByInputStream_One() throwsIOException { //全路径 String path = "/Users/grahamliu/idea-workspace/AppiumAIDemo/src/main/resources/appium.properties"; Properties properties = newProperties(); InputStream inputStream = new BufferedInputStream(newFileInputStream(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() throwsIOException { //路径/开头,表示从classpath下取路径 //String path = "/appium.properties"; //路径不为/开头,从当前类所在包下取 String path = "appiumRelative.properties"; Properties properties = newProperties(); 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() throwsIOException{ //getClassLoader默认加载路径就是classpath,规定不需要用/开头文件路径 String path = "appium.properties"; Properties properties= newProperties(); 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() throwsIOException{ //ClassLoader默认加载路径就是classpath,规定不需要用/开头文件路径 String path = "appium.properties"; Properties properties = newProperties(); 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 voidgetPropertiesByResourceBundle_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() throwsIOException{ String path = "/Users/grahamliu/idea-workspace/AppiumAIDemo/src/main/resources/appium.properties"; InputStream inputStream = new BufferedInputStream(newFileInputStream(path)); ResourceBundle resourceBundle = newPropertyResourceBundle(inputStream); System.out.println(this.getClass().getName()+"+"+Thread.currentThread().getStackTrace()[1].getMethodName()); System.out.println(resourceBundle.getString("appiumUrl")); }