2017-07-30 42 views
-3

方法getResourceAsStreamClassClassLoader返回InputStream。在调用getResourceAsStream时,这个InputStream实际上是否加载了所有内容,还是只是指向一些在请求部分资源时加载资源的系统?什么时候getResourceAsStream实际上加载资源?

+0

这是一个数据流。它会根据需要加载,但很可能会加载块。这就是所谓的缓冲。整个资源未预先加载*(除非小于缓冲区大小)*。 – Andreas

回答

0

getResourceAsStream是什么时候实际加载资源?

该方法只是打开一个阅读资源的流。它没有“负载”它”。

流的实际行为将实施(例如类加载器)具体,但并没有什么通用ClassLoader API文档中建议一个类加载器应该预读的资源到内存中。

  • 如果你想一个类加载器要做到这一点,你可以写一个自定义的类装载器 。

  • 如果你想确定一个特定的类加载器不是那么做 ...阅读源代码。然后如有必要使用不同的类加载程序,这种类型的加载程序不会这样,或者实现您自己的。


1 - 甚至没有方法或类名,IMO。一个“类加载器”加载类,并且我读了“加载”一词,因为它具有不适用于其他事物的特定技术含义。

2 - 可能有不明确的情况下,这是不可能的。例如,一个类装载器从需要在单个I/O操作中读取数据的设备读取数据。

0

这是一个InputStream。它被读取时阅读它。没有神秘感。

相关问题