這篇文章主要介紹了Java Resource路徑整理總結的相關資料,需要的朋友可以參考下
## Java Resource路徑
首先一點很重要,Java中不存在標準的相對路徑,各種相對路徑取資源的方式都是基於某種規則轉化為絕對路勁
然後一點也很重要,絕對不要直接使用絕對路徑,否則死得很難看
基於以上兩點,總結Resource路徑問題無非歸結為一點:找基點,也就是在某種環境下(web、j2ee或jar套件等)透過適當的方式找到一個穩定的基點,然後透過這個基點找到你要的resource
Java中的基點有哪些呢?大致總結一下有以下幾種:
1)classpath
如果你要找的資源在classpath下,那麼透過classpath這個基點是比較適合的,而要取得這個基點方式主要是透過ClassLoader來,具體方法就是ClassLoader.getResource(
String name),而取得ClassLoader的方式很多,例如:
- Thread.currentThread().getContextClassLoader()
- clazz.getClassLoader()
##ClassLoader. getSystemClassLoader()-
ClassLoader. getSystemClassLoader()
ClassLoader找resource的實作原理就是先
遞迴
在parent classLoader中從所在classpath裡載入resource(最後如何載入JDK未開源),如果所有層級的classLoader都未找到,則呼叫findResource方法來找,而這個方法是暴露給自製classLoader來現實的,因此給了在classpath之外載入resource的機會。
2) 目前使用者目錄
就是相對於System.getProperty("user.dir" )傳回的路徑, 對於一般項目,這是專案的根路徑。對於JavaEE伺服器,這可能是伺服器的某個路徑。這個並沒有統一的規範! 然而, 預設情況下,java.io 套件中的類別總是會根據目前使用者目錄來分析相對路徑名,如new File("xxx"),就是在System.getProperty("user.dir" )路徑下找xxx文件。因此,透過這種方式來定位文件可能會出現移植問題。
3) Web應用程式的根目錄
在Web應用程式中,我們一般透過ServletContext.getRealPath("/" )方法得到Web應用程式的根目錄的絕對路徑。 掌握了上面幾個基點,就能很輕鬆得定位你要找的resource,只不過要清楚地認識到不要只圖一時快活,而不管將來移植的死活,要確保能任何環境下(j2se or web,windows or
Linux###)不出問題。 ###
以上是Java Resource路徑整理詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!