java - 重新加载由 getResourceAsStream 加载的资源

标签 java web-applications

遵循最佳实践,我使用 Thread.currentThread().getContextClassLoader().getResourceAsStream 加载 Web 应用程序中的资源(如文本文件或 xml 文件),而不是通过文件 API。

但是,这样做的缺点是,如果磁盘上的资源发生变化,对 getResourceAsStream 的后续调用会无限期地返回旧版本。

不过,我希望它能够获取新版本。在我的调试器中,我看到类加载器中有一个名为 resourceEntries 的简单 HashMap。使用反射我已经能够删除一个特定的条目,这似乎有效。

但是这种方法很脆弱。

有没有更标准的方法来做到这一点?

最佳答案

试试这个:

ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();
URL resURL = ctxLoader.getResource(resName);
URLConnection resConn = resURL.openConnection();
resConn.setUseCaches(false);
InputStream resIn = resConn.getInputStream();
...

关于java - 重新加载由 getResourceAsStream 加载的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4749094/

相关文章:

java - 如何使用 Java Mail API 获取有限数量的消息

java - NullPointerException 错误和卡片布局

java - 奇怪的 DexArchiveMergerException

java - 在java中编译代码 - 需要印地语输出

java - 如果服务器超时,Socket InputStream read() 是否解除阻塞?

javascript - 在断开连接的状态下运行(移动)网络应用程序?

java - Spring MVC : PropertyEditor throwing exception, 无法设置值

licensing - GPL 和 Webapp 源

iPhone:Safari 与从 "Home Screen"书签启动

windows - Web 应用程序 IPC/RPC 与客户端应用程序