從類路徑載入資源

載入打包在 JAR 中的資源(影象,文字檔案,屬性,KeyStore 等)非常有用。為此,我們可以使用 ClassClassLoaders。

假設我們有以下專案結構:

program.jar
|
\-com
  \-project
    |
    |-file.txt
    \-Test.class  

我們想從 Test 類訪問 file.txt 的內容。我們可以通過詢問類載入器來實現:

InputStream is = Test.class.getClassLoader().getResourceAsStream("com/project/file.txt");

通過使用類載入器,我們需要指定資源的完全限定路徑(每個包)。

或者,我們可以直接詢問 Test 類物件

InputStream is = Test.class.getResourceAsStream("file.txt");

使用類物件,路徑相對於類本身。我們的 Test.classcom.project 包中,與 file.txt 相同,我們根本不需要指定任何路徑。

但是,我們可以使用類物件的絕對路徑,如下所示:

 is = Test.class.getResourceAsStream("/com/project/file.txt");