天天看點

Java中getResourceAsStream的用法小結

java中getresourceasstream的用法小結

一、java中的getresourceasstream主要有以下三種用法:

1、class.getresourceasstream(string path) 

    path 不以’/'開頭時預設是從此類所在的包下取資源,以’/'開頭則是從classpath根下擷取。

    其實是通過path構造一個絕對路徑,最終還是由classloader擷取資源。

2、class.getclassloader.getresourceasstream(string path) 

    預設則是從classpath根下擷取,path不能以’/'開頭,最終是由classloader擷取資源。

3、servletcontext.getresourceasstream(string path)

    預設從webapp根目錄下取資源,tomcat下path是否以’/'開頭無所謂,當然這和具體的容器實作有關。

    jsp下的application内置對象就是上面的servletcontext的一種實作。

二、用法示例

    1:要加載的檔案和.class檔案在同一目錄下,例如:com.x.y 下有類me.class ,同時有資源檔案myfile.xml那麼,應該有如下代碼:

    me.class.getresourceasstream("myfile.xml");

     2: 在me.class目錄的子目錄下,例如:com.x.y 下有類me.class ,同時在 com.x.y.file 目錄下有資源檔案myfile.xml  那麼,應該有如下代碼:

    me.class.getresourceasstream("file/myfile.xml");

    3: 不在me.class目錄下,也不在子目錄下,例如:com.x.y 下有類me.class ,同時在 com.x.file 目錄下有資源檔案myfile.xml, 那麼,應該有如下代碼:

    me.class.getresourceasstream("/com/x/file/myfile.xml");

    總結一下,可能隻是兩種寫法

    1、前面有 “ / ”,“ / ”代表了工程的根目錄

    2、前面沒有 “/”,代表目前類的目錄