存取Java JAR 檔案中的資源路徑
使用儲存在Java JAR 檔案中的資源時,可以獲得資源的路徑具有挑戰性的。與檔案系統上儲存的常規檔案不同,JAR 中的資源不一定有直接對應的檔案。
提供的程式碼片段說明了這個問題:
ClassLoader classLoader = getClass().getClassLoader(); File file = new File(classLoader.getResource("config/netclient.p").getFile());
此程式碼會導致FileNotFoundException,因為該資源無法作為檔案系統上的實體檔案存取。 JAR 檔案可能尚未擴展為單一文件,且類別載入器本身可能未提供資源的檔案句柄。
替代解決方案
取得內容對於JAR 檔案中的資源,另一種方法是使用classLoader.getResourceAsStream():
ClassLoader classLoader = getClass().getClassLoader(); PrintInputStream(classLoader.getResourceAsStream("config/netclient.p"));
此程式碼直接讀取並列印資源的內容,無需存取檔案路徑。如果絕對有必要以文件形式存取資源,您可以將流複製到臨時文件中:
File tempFile = File.createTempFile("temp", null); try ( InputStream inputStream = classLoader.getResourceAsStream("config/netclient.p"); OutputStream outputStream = new FileOutputStream(tempFile); ) { IOUtils.copy(inputStream, outputStream); }
以上是如何存取 Java JAR 檔案中的資源?的詳細內容。更多資訊請關注PHP中文網其他相關文章!