【java】獲取項目資源路徑


 目資源路徑分兩種,一種是普通Java項目的資源路徑,另一種是JavaEE項目的資源路徑。

 

  • 獲取Java項目的包(源碼下的包 或者 jar包)的資源路徑

 

Java代碼   收藏代碼
  1. // 方法1:通過this.getClass().getResoure("")獲取, 有"/"開頭表示以bin目錄為根目錄, 沒"/"開頭表示以當前文件夾為根目錄   
  2. this.getClass().getResource("/").getFile();  
  3.           
  4. // 方法2:通過this.getClass().getClassLoader().getResource(""), 不允許以"/"開頭, 默認以bin目錄為根, 類似方法1中以"/"開頭的情況  
  5. this.getClass().getClassLoader().getResource("").getFile();  
  6.           
  7. // 方法3:通過ClassLoader.getSystemResource("")獲取, 不允許以"/開頭", 默認以bin目錄為根, 同上  
  8. ClassLoader.getSystemResource("").getFile();  
  9.           
  10. // 方法4:通過Thread.currentThread().getContextClassLoader().getResource("")獲取, 同上【推薦】  
  11. Thread.currentThread().getContextClassLoader().getResource("").getFile();  
  12.           
  13. // 方法5:通過new File("bin").getCanonicalPath()獲取, 有"/"開頭, 則以系統盤為根, 沒"/"開頭, 表示以bin目錄為根   
  14. new File("bin").getCanonicalPath();  
  15.           
  16. // 方法6:通過System.getProperty("user.dir") + File.separator + "bin"來獲取(不推薦)  
  17. System.getProperty("user.dir") + File.separator + "bin";  

       據說方法4的系統兼容性最好,所以推薦第4種方法獲取資源路徑。

 

    

 

 

  • 獲取JavaEE項目的資源路徑

    對於獲取JavaEE中的資源,其實就是獲取WEB-INF目錄的父目錄下的資源,而且src的源碼編譯后的class文件,也會存放在WEB-INF/classes文件夾下,所以獲取JavaEE資源的方法,也適用於獲取Java普通資源,方法如下:

Java代碼   收藏代碼
  1. // getRealPath()方法中的參數, 是否以"/"開頭效果都是一樣的, 都是以WEB-INF目錄的父目錄為根目錄進行查找  
  2. request.getServletContext().getRealPath("");  

 

 

 

 

總結:

  1. 通過getClassLoader().getResource()的方法, 只能獲取package(包括jar包的資源)里面的資源

     

  2. 若想獲取項目下普通目錄的資源,可以通過new File(path)的方式獲取,路徑默認以項目路徑為根,以bin開始表示獲取bin目錄,以src開始表示獲取src目錄,以XXX開始表示獲取項目下XXX目錄,該方法最靈活,就算是JavaEE項目同樣適用(例如WecContent,可以使用new File("WebContent")獲取),唯一缺點就是不能獲取jar里面的資源(因為jar包的資源不是以普通File的形式存儲的)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM