首頁 Java java教程 如何選擇正確的方法在 Java 中將檔案作為輸入流載入?

如何選擇正確的方法在 Java 中將檔案作為輸入流載入?

Dec 16, 2024 pm 04:57 PM

How to Choose the Right Method for Loading Files as InputStreams in Java?

將檔案載入為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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

2025年的前4個JavaScript框架:React,Angular,Vue,Svelte 2025年的前4個JavaScript框架:React,Angular,Vue,Svelte Mar 07, 2025 pm 06:09 PM

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

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型? Java的類負載機制如何起作用,包括不同的類載荷及其委託模型? Mar 17, 2025 pm 05:35 PM

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?

Node.js 20:關鍵性能提升和新功能 Node.js 20:關鍵性能提升和新功能 Mar 07, 2025 pm 06:12 PM

Node.js 20:關鍵性能提升和新功能

如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案? 如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案? Mar 17, 2025 pm 05:46 PM

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

冰山:數據湖桌的未來 冰山:數據湖桌的未來 Mar 07, 2025 pm 06:31 PM

冰山:數據湖桌的未來

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存? 如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存? Mar 17, 2025 pm 05:44 PM

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

Spring Boot Snakeyaml 2.0 CVE-2022-1471問題已修復 Spring Boot Snakeyaml 2.0 CVE-2022-1471問題已修復 Mar 07, 2025 pm 05:52 PM

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

如何共享黃瓜中的步驟之間的數據 如何共享黃瓜中的步驟之間的數據 Mar 07, 2025 pm 05:55 PM

如何共享黃瓜中的步驟之間的數據

See all articles