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

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

Barbara Streisand
發布: 2024-12-16 16:57:11
原創
750 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板