加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 00:27:11 所属栏目:Java 来源:网络整理
导读:似乎 java正在为URL( files)保存某种缓存. 例如 我的classpath中的jar文件中有一个文件“resourcs.txt”. 该文件的内容是: “版本1” new java.io.BufferedReader (new java.io.InputStreamReader( new URL("jar","","file:test.jar!/resourcs.txt").openCo
似乎 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上被更快地触发,因为它不喜欢保持文件句柄打开太长时间……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读