通過getResourceAsStream方法獲取項目下的指定資源或類

首先,Java中的getResourceAsStream獲取項目下的指定資源有以下幾種: 

一:獲取src下的指定資源

  1. 通過Class.getResource 來獲取。  path 不以’/'開頭時默認是從此類所在的包下取資源,以’/'開頭則是從ClassPath根下(即'/'代表src)獲取。其只是通過path構造一個絕對路徑,最終還是由ClassLoader獲取資源
     //必須要從根節點進行獲取,即以/ 開頭       
     TempMain.class.getResource("/application.yml");
    
  2. Class.getResourceAsStream 與Class.getResource 一樣,只是將獲取到的URL 進行了流的處理 
    TempMain.class.getResourceAsStream("/application.yml");

     

  3. Class.getClassLoader.getResourceAsStream(String path) :默認則是從ClassPath根下獲取,path不能以’/'開頭,最終是由ClassLoader獲取資源。
    TempMain.class.getClassLoader().getResourceAsStream("application.yml");

     

二:獲取web項目下的指定資源

    1)、 ServletContext. getResourceAsStream(String path):默認從WebAPP根目錄(即:要發佈在服務器下的項目的根目錄(與src同級的web文件夾下))下取資源,path是否以’/'開頭無所謂;

   A)、在web項目的根目錄下有myfile.xml文件,則應該使用:

getServleContext().getResourceAsStream("myfile.xml");

 

2)、Jsp下的application內置對象就是上面的ServletContext的一種實現

三 獲取指定包下的所有class類

需要先將包名轉化爲路徑名,比如講org.apache 轉換爲 org/apache ,然後通過循環遍歷找到該文件下有哪些類,然後在將路徑名轉化爲類名,通過反射即可拿到。 

或者通過第一步獲取到了資源文件 , 然後通過解析資源文件, 獲取到對應的ClassName ,然後通過反射來實現 。 (可以使用Spring 中的 ClassReader )

四 獲取jar包裏的class文件

先通過第一種方法獲取到對應的jar文件,然後通過 

JarFile jarFile = new JarFile(file)

獲取到jarFile,接着通過第三部即可

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章