javaweb获取配置文件的路径
读取配置文件 , xx.properties放在webroot/WEB-INF/classes/目录下
首先将配置文件转换成InputStream,有两种方式,原理一样,都是通过类加载器得到资源:
Java代码
1.//从classpath路径开始找,如果放在com/test 包下面,则getResourceAsStream("com/test/xx.properties");
2.
3.1)InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("xx.properties");
4.
5.(2) InputStream inputStream =
6.
7.is.getClass() .getClassLoader().getResourceAsStream( "xx.properties" );
//从classpath路径开始找,如果放在com/test 包下面,则getResourceAsStream("com/test/xx.properties");
(1)InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("xx.properties");
(2) InputStream inputStream =
this.getClass() .getClassLoader().getResourceAsStream( "xx.properties" );
Java代码
1.String path = this.class.getClassLoader().getResource(
2. "xx.properties").getPath();
String path = this.class.getClassLoader().getResource(
"xx.properties").getPath();
Java代码
1.String path = this.class.getClassLoader().getResource(
2. "/").getPath();
String path = this.class.getClassLoader().getResource(
"/").getPath();
获取绝对路径,既是.../classes/
调用对象的getClass()方法是获得对象当前的类类型,这部分数据存在方法区中,
而后在类类型上调用 getClassLoader()方法是得到当前类型的类加载器,我们知道在Java中所有的类都是通过加载器加载到虚拟机中的,而且类加载器之间存在父子关系,就是子知道父,父不知道子,这样不同的子加载的类型之间是无法访问的(虽然它们都被放在方法区中),所以在这里通过当前类的加载器来加载资源也就是保证是和类类型同一个加载器加载的。
最后调用了类加载器的getResourceAsStream()方法来加载资源。
然后加载配置文件,读取属性值
Properties prop = new Properties();
prop.load(input);
String value = prop.getProperty("PropertyName");
input.close();
出自:http://navylee.iteye.com/blog/781039