2017-07-30 17 views
-3

getResourceAsStreamClassおよびClassLoaderにはInputStreamが返されます。このInputStreamは、実際にはgetResourceAsStreamの呼び出し時にすべてをロードするのですか、またはリソースの一部が要求されたときにリソースをロードするシステムを指していますか?getResourceAsStreamはいつ実際にリソースをロードしますか?

+0

これはデータストリームです。必要に応じてロードされますが、ブロック単位でロードされる可能性が非常に高いです。それはバッファリングと呼ばれています。リソース全体がプリロードされていない*(バッファサイズより小さい場合を除く)*。 – Andreas

答えて

0

実際にgetResourceAsStreamはリソースをロードしますか。

このメソッドは、リソースを読み取るためのストリームを開きます。これは、(例えばクラスローダ)に特異的ではない「負荷」それ」。

ストリームの実際の動作が可能になる実装を行いますが、提案する一般的なClassLoader APIドキュメントには何もありませんクラスローダべきことメモリにリソースを先読み。

  • あなたがそれを行うクラスローダーをしたい場合は、カスタム クラスローダを書くことができます。

  • 特定のクラスローダーでないことを確認したい場合は、 ...ソースコードをお読みください。その後、必要ならばは、そのように動作しない別のクラスローダーを使用するか、独自のを実装します。


1 - IMO、メソッドやクラス名を均一でありません。 「クラスローダー」はクラスをロードし、「ロード」という言葉は、他のものには適用できない特定の技術的な意味を持つものとして読んでいます。

2 - これは不可能な場合があります。たとえば、単一のI/O操作でデータを読み取る必要があるデバイスから読み取るクラスローダーです。

0

InputStreamです。それはあなたがを読むときに読み込まれます。謎はありません。

関連する問題