首先,Java中的getResourceAsStream獲取項目下的指定資源有以下幾種:
一:獲取src下的指定資源
1)、 Class.getResourceAsStream(String path) : path 不以’/'開頭時默認是從此類所在的包下取資源,以’/'開頭則是從ClassPath根下(即'/'代表src)獲取。其只是通過path構造一個絕對路徑,最終還是由ClassLoader獲取資源。
例:
A)、在同級目錄下:com.x.y 下有類me.class ,同時在同級目錄下有資源文件myfile.xml,則應使用:me.class.getResourceAsStream("myfile.xml");
B)、在子目錄下:例如:com.x.y 下有類me.class ,同時在 com.x.y.file 目錄下有資源文件myfile.xml,則應該使用me.class.getResourceAsStream("file/myfile.xml");
2)、 Class.getClassLoader.getResourceAsStream(String path) :默認則是從ClassPath根下獲取,path不能以’/'開頭,最終是由ClassLoader獲取資源。
例:
A)、 不在同級目錄下,也不在子目錄下:例如:com.x.y 下有類me.class ,同時在 com.x.file 目錄下有資源文件myfile.xml,則應該使用:me.class.getClassLoader.getResourceAsStream("com/x/file/myfile.xml");
二:獲取web項目下的指定資源
1)、 ServletContext. getResourceAsStream(String path):默認從WebAPP根目錄(即:要發(fā)布在服務器下的項目的根目錄(與src同級的web文件夾下))下取資源,path是否以’/'開頭無所謂;
例:
A)、在web項目的根目錄下有myfile.xml文件,則應該使用:
getServleContext().getResourceAsStream("myfile.xml");
2)、Jsp下的application內(nèi)置對象就是上面的ServletContext的一種實現(xiàn)。
作者:青春代言人
鏈接:https://www.jianshu.com/p/be1de0bedddc