2017-07-30 44 views
-3

方法getResourceAsStreamClassClassLoader返回InputStream。在調用getResourceAsStream時,這個InputStream實際上是否加載了所有內容,還是隻是指向一些在請求部分資源時加載資源的系統?什麼時候getResourceAsStream實際上加載資源?

+0

這是一個數據流。它會根據需要加載,但很可能會加載塊。這就是所謂的緩衝。整個資源未預先加載*(除非小於緩衝區大小)*。 – Andreas

回答

0

getResourceAsStream是什麼時候實際加載資源?

該方法只是打開一個閱讀資源的流。它沒有「負載」它」。

流的實際行爲將實施(例如類加載器)具體,但並沒有什麼通用ClassLoader API文檔中建議一個類加載器應該預讀的資源到內存中。

  • 如果你想一個類加載器要做到這一點,你可以寫一個自定義的類裝載器 。

  • 如果你想確定一個特定的類加載器不是那麼做 ...閱讀源代碼。然後如有必要使用不同的類加載程序,這種類型的加載程序不會這樣,或者實現您自己的。


1 - 甚至沒有方法或類名,IMO。一個「類加載器」加載類,並且我讀了「加載」一詞,因爲它具有不適用於其他事物的特定技術含義。

2 - 可能有不明確的情況下,這是不可能的。例如,一個類裝載器從需要在單個I/O操作中讀取數據的設備讀取數據。

0

這是一個InputStream。它被讀取時閱讀它。沒有神祕感。

相關問題