首頁  >  文章  >  Java  >  Java Resource路徑整理詳解

Java Resource路徑整理詳解

黄舟
黄舟原創
2017-03-17 10:22:192197瀏覽

這篇文章主要介紹了Java Resource路徑整理總結的相關資料,需要的朋友可以參考下

##  Java Resource路徑

首先一點很重要,Java中不存在標準的相對路徑,各種相對路徑取資源的方式都是基於某種規則轉化為絕對路勁


然後一點也很重要,絕對不要直接使用絕對路徑,否則死得很難看


基於以上兩點,總結Resource路徑問題無非歸結為一點:找基點,也就是在某種環境下(web、j2ee或jar套件等)透過適當的方式找到一個穩定的基點,然後透過這個基點找到你要的resource


Java中的基點有哪些呢?大致總結一下有以下幾種:


1)classpath


如果你要找的資源在classpath下,那麼透過classpath這個基點是比較適合的,而要取得這個基點方式主要是透過ClassLoader來,具體方法就是ClassLoader.getResource(

String name),而取得ClassLoader的方式很多,例如:

  1. Thread.currentThread().getContextClassLoader()

  2. clazz.getClassLoader()

  3. ##ClassLoader. getSystemClassLoader()

  4. 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn