加载资源文件路径有三种方式
- 方式1:使用绝对路径加载,该方式不可行
- 方式2:使用相对路径加载----相对于classpath的根路径(字节码输出目录),使用较多。
此时使用ClassLoader(类加载器),类加载器默认从classpath根路径寻找文件
- 方式3:使用相对路径加载–相对于当前加载资源文件的字节码路径
是从 ProjectName\bin\resource里去找,也就是src下的resource中找
相关实例
db.properties/db2.properties
LoadResourceDemo.java
//加载资源文件
public class LoadResourceDemo {
public static void main(String[] args) throws Exception {
test1();
test2();
test3();
}
//方式1:使用绝对路径加载,该方式不可行
private static void test1() throws Exception {
Properties p = new Properties();
InputStream inputStream = new FileInputStream("D:/eclipse/workspace/反射机制/resources/db.properties");
p.load(inputStream);
System.out.println(p);
}
//方式2:使用相对路径加载--相对于classpath的根路径(字节码输出目录),使用较多
//此时使用ClassLoader(类加载器),类加载器默认从classpath根路径寻找文件
private static void test2() throws Exception {
Properties p = new Properties();
//拿到当前线程对象的ClassLoader
ClassLoader loader = Thread.currentThread().getContextClassLoader();
InputStream inputStream = loader.getResourceAsStream("db.properties");
p.load(inputStream);
System.out.println(p);
}
//方式3:使用相对路径加载--相对于当前加载资源文件的字节码路径
//是从反射机制\bin\resource里去找,也就是src下的resource中找
private static void test3() throws Exception {
Properties p = new Properties();
InputStream inputStream = LoadResourceDemo.class.getResourceAsStream("db2.properties");
p.load(inputStream);
System.out.println(p);
}
}