關於路徑問題的詳細講解,大家耐心查看!
路徑分類: 絕對路徑、相對路徑和根路徑
絕對路徑: 絕對路徑是指目錄下的絕對位置,直接到達目標位置,通常是從盤符開始的路徑。比如: 我們熟悉的host文件路徑爲C:\windows\system32\host
Web中的絕對路徑: 用在不同網站之間跳轉,比如:http://www.baidu.com.image/sky.png
相對路徑: 對路徑就是指由這個文件所在的路徑引起的跟其它文件(或文件夾)的路徑關係。使用相對路徑可以爲我們帶來非常多的便利。比如: 同樣是host文件路徑的例子,假如當前路徑爲C:\windows
,使用相對路徑表示host文件路徑爲:system32\host
(省略了".")
Web中的相對路徑: 用在同一網站中,比如: image/1.jpg
,僅限靜態資源,如果頁面比較多,並且使用框架,會出現混亂
“.” 表示當前路徑,在通道情況下可以省略,只有在特殊的情況下不能省略。比如: .system32\host
是與host文件路徑的相對路徑相同的!
“. .” 表示父目錄,比如: 假設我們當前路徑爲c:\program files
想去找到host文件路徑,我們需要輸入 ..\windows\system32\host
。假如我們在c:\program files\Windows apps
目錄下,還是想去找到host文件路徑的話,就需要輸入..\..\windows\system32\host
根路徑: 根路徑也叫做根目錄。根目錄指邏輯驅動器的最上一級目錄,它是相對子目錄來說的。打開“我的電腦”,雙擊C盤就進入C盤的根目錄,雙擊D盤就進入D盤的根目錄。其它類推。根目錄在文件系統建立時即已被創建,其目的就是存儲子目錄(也稱爲文件夾)或文件的目錄項。一“棵“目錄樹,樹的最根本就是它的根(根目錄)。假設D盤下images文件夾里名稱爲apple.jpg
的圖片,那麼根目錄就可以寫爲img src="/images/apple.jpg"
Web中的根路徑 : 網站根目錄指的是一個服務器上同時放置多個站點使用,或者一個大規模站點需要放置在幾個服務器上。" / “則表示根目錄,比如: Web中指定就是主機名(服務器),/servletdemo/loginservlet
,如果在瀏覽器中,” / " 表示主機名http://localhost:8080/
。/loginservlet
,如果在服務器中," / " 表示項目路徑/servletdemo
;
注意: “..” 也同樣適用於表示根目錄路徑
明白了以上的路徑問題,再來看getClassLoader().getResource()和getResource()的路徑問題就簡單了!
. getClass().getResource(file) : 表示只會在當前調用類所在的同一路徑下查找該file文件
. getClass().getClassLoader().getResource(file): 表示只會在根目錄下(/)查找file文件
可以這麼理解: getClassLoader()表示的就是一個” / “。
舉個例子說明: 我們去除掉getResource方法,只去觀察getClassLoader方法的作用。當我們在Web中JDBC階段用工具類自帶的流去讀中properties文件時,會設置路徑,那時設置路徑的方式就是根路徑方式。(假設properties文件創建在src下,DBUtils工具類創建在com.xxx.java.utils包中)
下面兩種方式的配置文件路徑是相同的作用,都能讀取到!不信你們可以去試試!
如果你覺得還滿意,可以點贊、關注一波哦!持續分享各種知識…