从文件读取时java.net.URL缓存

前端之家收集整理的这篇文章主要介绍了从文件读取时java.net.URL缓存前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
似乎 java正在为URL(& files)保存某种缓存.
例如
我的classpath中的jar文件中有一个文件“resourcs.txt”.
文件内容是:
“版本1”
new java.io.BufferedReader (new java.io.InputStreamReader( new URL("jar","","file:test.jar!/resourcs.txt").openConnection().getInputStream())).readLine()

返回“版本1”(如预期的那样)

我将文件内容更改为“版本2”并再次调用代码.
我仍然得到“版本1”

我该如何清除这个“缓存”.

注意:我发现它只发生在Linux上.

解决方法

由于URL中使用了jar协议,因此连接是 sun.net.www.protocol.jar.JarURLConnection的实例,它可以从 sun.net.www.protocol.jar.JarFileFactory中实现的缓存中受益

代码确认URLConnection实现上的setUseCache(false)将阻止使用该缓存.

我关于Linux / Windows行为差异的假设:来自URLJarFileCloseController接口的关闭事件通知在Windows上被更快地触发,因为它不喜欢保持文件句柄打开太长时间……

猜你在找的Java相关文章