首先看看项目目录结构
1、利用Class.getResourceAsStream(String path)
path 不以’/'开头时默认是从此类所在的包下取资源,以’/'开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。
当前目录(相对于class)
//调用与A.java对应的A.properties
InputStream is = A.class.getResourceAsStream("A.properties")
Properties properties = new Properties();
properties.load(is);
String name = properties.getProperty("name");
//注意:A.properties一定得在与resources目录下,且与A.java具有相同的目录结构
classpath路径(相对于classpath,,“/”)
//调用与A.java对应的A.properties
InputStream is = A.class.getResourceAsStream("/package1/A.properties")
Properties properties = new Properties();
properties.load(is);
String name = properties.getProperty("name");
//注意:A.properties一定得在与resources目录下,且与A.java具有相同的目录结构
2、利用Class.getClassLoader().getResourceAsStream(String path)
默认则是从ClassPath根下获取,path不能以’/'开头,最终是由ClassLoader获取资源。
//调用与A.java对应的A.properties
InputStream is = A.class.getClassLoader().getResourceAsStream("package1/A.properties")
Properties properties = new Properties();
properties.load(is);
String name = properties.getProperty("name");
3、ServletContext. getResourceAsStream(String path)
默认从WebAPP根目录下取资源,Tomcat下path是否以’/'开头无所谓,当然这和具体的容器实现有关。