Class.getResourceAsStream 和 ClassLoader.getResourceAsStream

本帖轉自:http://blog.csdn.net/explorers/archive/2007/08/02/1722740.aspx


這兩個方法還是略有區別的, 以前一直不加以區分,直到今天發現要寫這樣的代碼的時候運行
錯誤, 才把這個問題澄清了一下。

基本上,兩個都可以用於從 classpath 裏面進行資源讀取,  classpath包含classpath中的路徑
和classpath中的jar。

兩個方法的區別是資源的定義不同, 一個主要用於相對與一個object取資源,而另一個用於取相對於classpath的
資源,用的是絕對路徑。

在使用Class.getResourceAsStream 時, 資源路徑有兩種方式, 一種以 / 開頭,則這樣的路徑是指定絕對
路徑, 如果不以 / 開頭, 則路徑是相對與這個class所在的包的。

在使用ClassLoader.getResourceAsStream時, 路徑直接使用相對於classpath的絕對路徑。

舉例,下面的三個語句,實際結果是一樣的:
   com.explorers.Test.class.getResourceAsStream("abc.jpg")
= com.explorers.Test.class.getResourceAsStream("/com/explorers/abc.jpg")
= ClassLoader.getResourceAsStream("com/explorers/abc.jpg")

 

發佈了28 篇原創文章 · 獲贊 48 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章