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