如何選擇正確的方法在 Java 中將檔案作為輸入流載入?
Dec 16, 2024 pm 04:57 PM將檔案載入為InputStream:不同的方法以及何時使用它們
將檔案載入為InputStream時,有幾種方法可以可以使用,每個都有自己的細微差別。本文深入探討了三種常用方法之間的差異:
-
Class.getResourceAsStream(fileName):
此方法將fileName 解釋為相對於呼叫它的類別的包的路徑。例如,String.class.getResourceAsStream("myfile.txt") 在類別路徑「java/lang/myfile.txt」中搜尋檔案「myfile.txt」。如果路徑以“/”開頭,則表示絕對路徑,並從類路徑根開始搜尋。
-
ClassLoader.getResourceAsStream(fileName):
與 Class.getResourceAsStream() 不同,此方法將所有路徑視為絕對路徑。 String.class.getClassLoader().getResourceAsStream("myfile.txt") 和 String.class.getClassLoader().getResourceAsStream("/myfile.txt") 在類別路徑中搜尋檔案“myfile.txt” "./myfile.txt."
-
Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName):
這個方法
這個方法是適用於從應用程式伺服器載入類別和檔案時,因為它使用與目前執行緒關聯的上下文類別載入器,該類別載入器處理部署在應用程式伺服器中的資源server.
何時使用每種方法:
在您的特定場景中,檔案和類別駐留在同一個jar 和 EAR 檔案中在WebSphere 6.1中部署,您應該使用Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName),因為它考慮了上下文應用程式伺服器的類別載入器。Tomcat 7 及以下使用者的警告:
但是,如果使用 Tomcat 7 或更早版本,請注意以下警告。雖然上面的解釋總體上是合理的,但 Tomcat 6 和 7 版本在 findResource(String name) 方法中處理資源規範化的方式似乎有所不同。因此,classLoader.getResourceAsStream("/resource.txt") 和 classLoader.getResourceAsStream("resource.txt") 在這些版本中可能不會產生相同的結果。如果在早期 Tomcat 版本中使用這些方法,請務必小心。以上是如何選擇正確的方法在 Java 中將檔案作為輸入流載入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱門文章

熱門文章

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

2025年的前4個JavaScript框架:React,Angular,Vue,Svelte

如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?

Spring Boot Snakeyaml 2.0 CVE-2022-1471問題已修復
