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