Java中取資源時,經常用到Class.getResource和ClassLoader.getResource。昨天老師講解題目時候,問我們為什麼你們都是在文件前家上"/":
String path = Resources.class.getResource("/a.txt").getPath();
注:在Resources文件下創建了a.txt文件
我想我反正是試出來的,不使用"/"不行。為了正式解答心中的疑惑,我們正式來看看Resources路徑問題。
1. Class.getResource(String path)
path不以’/'開頭時,默認是從此類所在的包下取資源; path以’/'開頭時,則是從ClassPath根下獲取;
System.out.println("path:"+Resources.class.getResource("/"));
System.out.println("path:"+Resources.class.getResource(""));
輸出結果:
path:file:/home/xiaosi/Study/lectures/target/classes/
path:file:/home/xiaosi/Study/lectures/target/classes/com/qunar/lectures/
2. ClassLoder.getClassLoder.getResource(String path)
path不能以’/'開頭時; path是從ClassPath根下獲取;
System.out.println(r.getClass().getClassLoader().getResource(""));
System.out.println(r.getClass().getClassLoader().getResource("/"));//null
輸出結果:
file:/home/xiaosi/Study/lectures/target/classes/
null