遵循最佳实践,我使用 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/