在 Java 中,通常使用相對於 JAR 檔案根目錄的路徑來訪問JAR檔案中的資源。此外,瞭解如何構建這些路徑以有效檢索資源也非常重要。
在本教程中,我們將探索獲取 Java JAR 檔案中資源路徑的不同方法。
1、使用Class.getResource()方法獲取資源的 URL
Class.getResource ()方法提供了一種獲取JAR 檔案中資源的URL的直接方法。讓我們看看如何使用這個方法:
@Test |
在此測試中,我們呼叫GetPathToResourceUnitTest.class上的getResource()方法,並將資原始檔“ /myFile.txt ”的路徑作為引數傳遞。然後,我們斷言獲取到的resourceUrl不為null,說明資原始檔定位成功。
2.使用ClassLoader.getResource()方法
或者,我們可以使用ClassLoader.getResource()方法來訪問 JAR 檔案中的資源。當編譯時未知資源路徑時,此方法很有用:
@Test |
在此測試中,我們使用類載入器GetPathToResourceUnitTest.class.getClassLoader()來獲取資原始檔。與以前的方法不同,此方法不依賴於類的包結構。相反,它在類路徑的根級別搜尋資原始檔。
這意味著它可以定位資源,無論它們在專案結構中的位置如何,從而更靈活地訪問位於類包外部的資源。
3.使用Paths.get()方法
從Java 7開始,我們可以使用Paths.get()方法來獲取表示JAR檔案中資源的Path物件。就是這樣:
@Test |
在這裡,我們首先呼叫getResource()方法來檢索資源文件的 URL。然後,我們將此 URL 轉換為 URI 並將其傳遞給Paths.get()以獲取表示資原始檔位置的Path物件。
當我們需要將資原始檔作為Path物件使用時,這種方法很有用。它支援更高階的檔案操作,例如讀取檔案內容或將內容寫入檔案。此外,它還提供了一種在Java NIO包上下文中與資源互動的便捷方法。
結論
總之,訪問 Java JAR 檔案中的資源對於許多應用程式至關重要。無論我們喜歡Class.getResource()的簡單性、 ClassLoader.getResource()的靈活性,還是Paths.get()的現代方法,Java 都提供了各種方法來有效地完成此任務。