在看JAVA连接数据库的视频教程中,出现过这个方法,觉得应该挺重要的就上网找了找。既然学到了就写出来,省的下次忘了。
在JAVA中getResourceAsStream这个方法是用来获取配置文件的,方法传入的参数是一个路径。本以为写起来路径很简单,但是看来别人讲的,路径的填写还是挺有学问的。getResourceAsStream这个函数寻找文件的起点是JAVA项目的根目录,假设我的java文件的目录为../com/connect/Connection.java 而在这个目录下还有一个jdbcinfo.properties文件,以及在../com/目录下还有一个jdbcinfo2.properties文件,这两个都是配置文件。如果我想要在Connection.java中分别获取这两个文件该如何呢?
使用Class.getResourceAsStream()
public static void getRescource1(){
Properties prop = new Properties();
InputStream is = Connection.class.getResourceAsStream("jdbcinfo.properties");
//InputStream is = Connection.class.getResourceAsStream("../jdbcinfo2.properties");
try {
prop.load(is);
System.out.println(prop.getProperty("driver"));
} catch (IOException e) {
e.printStackTrace();
}
}
由以上代码可知,需要获取与我java文件同一路径下的直接是文件名,如果需要访问上一级目录下的文件,使用绝对路径的话需要在前面加上
/com/jdb
cinfo2.properties,使用相对路径的话要在前面加上
../ 如果还需要再访问上一级须得在加上
../ eg:
../../jdbcinfo2.properties。
使用Class.getClassLoader().getResourceAsStream()
public static void getRescource2()
{
Properties prop = new Properties();
InputStream is = Connection.class.getClassLoader().
getResourceAsStream("com/jdbcinfo3.properties");
try {
prop.load(is);
System.out.println(prop.getProperty("driver"));
} catch (IOException e) {
e.printStackTrace();
}
}
Class.getClassLoader().getResourceAsStream()默认使用的路径就是class文件的根目录,所以使用Class.getClassLoader().getResourceAsStream()来获取文件的时候不能在路径前面加上 " / "