Note:
1.路径前加“/”本质就是绝对路径,根目录就是此时的类路径;不加“/”表示的是当前类的相对路径
2.ClassLoader.getResourceAsStream()都是从classpath中寻找
3.JdbcDemo.class.getResourceAsStream如下例:
(因为使用的maven工程,所以配置文件放在resources中,编译后放在classes类路径下;注意code中的加载方法。)
关于classpath:
关于Test.class.getResourceAsStream
public class Test {
/**
* case1: 此时使用绝对路径 classpath的路径-->src路径下
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception{
InputStream is = Test.class.getResourceAsStream("/jdbc.properties");
Properties pros = new Properties();
pros.load(is);
String user = pros.getProperty("user");
System.out.println(user);
}
}
public class Test {
/**
* case2: 此时使用相对路径, 从类路径下寻找
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception{
InputStream is = Test.class.getResourceAsStream("jdbc.properties");
Properties pros = new Properties();
pros.load(is);
String user = pros.getProperty("user");
System.out.println(user);
}
}
关于ClassLoader.getSystemClassLoader().getResourceAsStream
public class Test {
/**
* case3: 无论如何都会从classpath下开始寻找
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
Properties pros = new Properties();
pros.load(is);
String user = pros.getProperty("user");
System.out.println(user);
}
}
public class Test {
/**
* case4: 如果把jdbc.properties放在com.bytedance.code下,路径依旧是从classpath开始寻找
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("com/bytedance/code/jdbc.properties");
Properties pros = new Properties();
pros.load(is);
String user = pros.getProperty("user");
System.out.println(user);
}
}