用setProperty()修改配置文件后,如何立刻刷新缓存中的配置文件信息?

gideal_wang 2009-05-22 04:32:47
第一次用getProperty()读取配置文件后,配置文件会被缓存到内存中,当我用setProperty()修改配置文件后,再去取值,系统会去缓存中读取,取回来的还是没修改前的信息,所以请教:
(1)配置文件是通过什么方式缓存到内存中的,静态变量?
(2)如何实现修改配置文件后,立刻在内存中重新加载配置文件?或者去掉缓存中的信息
...全文
454 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ty_tarena_pger 2009-05-28
  • 打赏
  • 举报
回复
如果在MyEcplise可以看到你那个配置文件,说明它是正打开的(你不刷新显示的还是以前的数据)
ty_tarena_pger 2009-05-28
  • 打赏
  • 举报
回复
如何实现修改配置文件后,立刻在内存中重新加载配置文件?
1>刷新下项目-主要要刷新下项目下的配置文件(如果在MyEcplise下看不到你的那个配置文件就没必要刷新了)
2>load
gideal_wang 2009-05-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 yin_slin 的回复:]
其实就是一个单例模式的应用
[/Quote]
能否给出具体示例?
gideal_wang 2009-05-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 Johnson_Hong 的回复:]
写一个类,用一个静态变量保存property对象,她只在第一次访问时读取文件,之后都是直接访问,读取、写都是对这个属性操作
[/Quote]
能说的具体点吗?如何用静态变量保存property对象?以后都是直接对该静态变量进行读写操作?
密码测试 2009-05-26
  • 打赏
  • 举报
回复
其实就是一个单例模式的应用
gideal_wang 2009-05-26
  • 打赏
  • 举报
回复
高手帮忙啊,谢谢
Johnson_Hong 2009-05-22
  • 打赏
  • 举报
回复
写一个类,用一个静态变量保存property对象,她只在第一次访问时读取文件,之后都是直接访问,读取、写都是对这个属性操作
gideal_wang 2009-05-22
  • 打赏
  • 举报
回复
第一个是读取配置文件信息的,第二个是修改配置文件的,问题出在修改完后没有被缓存重新加载
kokobox 2009-05-22
  • 打赏
  • 举报
回复
看一下这个文章:

http://www.javaeye.com/problems/9776
gideal_wang 2009-05-22
  • 打赏
  • 举报
回复
public void setPath(String filename, String propertyName, String value) throws IOException {
InputStream inputStream = null;
FileOutputStream outputStream = null;
Properties p = new Properties();
try {
inputStream = this.getClass().getClassLoader().getResourceAsStream(filename);
outputStream = new FileOutputStream(this.getClass().getClassLoader().getResource("/").getPath() + filename);

p.load(inputStream);
p.setProperty(propertyName, value).toString();
p.store(outputStream, "Description");
String reload = new Common().getPath(filename, propertyName);
} catch (FileNotFoundException e2) {
e2.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
inputStream.close();
outputStream.close();
}
}
gideal_wang 2009-05-22
  • 打赏
  • 举报
回复
//读取配置文件信息
public String getPath(String filename, String strPath) throws IOException {
InputStream inputStream = this.getClass().getClassLoader()
.getResourceAsStream(filename);
String savePath = "";
Properties p = new Properties();
try {
p.load(inputStream);
savePath = p.getProperty(strPath);
} catch (IOException e1) {
e1.printStackTrace();
}finally{
inputStream.close();
}
return savePath;
}

其他地方都是直接调的这个接口来读取配置文件
Johnson_Hong 2009-05-22
  • 打赏
  • 举报
回复
你的Properties对象是什么时候读取的文件,这个对象放在哪个变量里,你都不知道吗?
gideal_wang 2009-05-22
  • 打赏
  • 举报
回复
我的问题就是怎么修改缓存中保存的配置文件信息?就是不清楚配置文件是通过什么方式缓存到内存中的
Johnson_Hong 2009-05-22
  • 打赏
  • 举报
回复
看配置的这块程序到底是怎么写的了

你在修改了文件的同时把缓存中的也修改了就可以了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧