解决修改properties 属性文件存在缓存问题,附带操作properties文件工具类
来源:互联网 发布:下载软件推荐 知乎 编辑:程序博客网 时间:2024/06/05 12:39
在做项目的时候有些数据不一定需要在数据库管理,例如数据库连接,定时任务等等的配置..有时候需要动态修改这些数据,但在修改完后,再次获取时出现问题.
在项目中要修改properties,修改之后,再进入相关目录查看properties文件,发现内容已经修改了,但是但通过TaskController.class.getResourceAsStream("/config.properties");获取的数据时,还是没有改变前的数据.
原因是:.getResourceAsStream是通过缓存中获取的.
解决办法:能过真实路径获取TaskController.class.getResource("/config.properties").getPath();
操作properties文件工具类:
package com.lanyuan.video.util;import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.util.Iterator;import java.util.Properties;import java.util.Map.Entry;import com.lanyuan.video.task.TaskController;public class PropertiesUtils {/** * 获取属性文件的数据 根据key获取值 * @param fileName 文件名 (注意:加载的是src下的文件,如果在某个包下.请把包名加上) * @param key * @return */public static String findPropertiesKey(String key) {try {Properties prop = getProperties();return prop.getProperty(key);} catch (Exception e) {return "";}}public static void main(String[] args) {Properties prop = new Properties();InputStream in = TaskController.class.getResourceAsStream("/config.properties");try {prop.load(in);Iterator<Entry<Object, Object>> itr = prop.entrySet().iterator();while (itr.hasNext()) {Entry<Object, Object> e = (Entry<Object, Object>) itr.next();System.err.println((e.getKey().toString() + "" + e.getValue().toString()));}} catch (Exception e) {}}/** * 返回 Properties * @param fileName 文件名 (注意:加载的是src下的文件,如果在某个包下.请把包名加上) * @param * @return */public static Properties getProperties(){Properties prop = new Properties();String savePath = TaskController.class.getResource("/config.properties").getPath();//以下方法读取属性文件会缓存问题//InputStream in = TaskController.class//.getResourceAsStream("/config.properties");try {InputStream in =new BufferedInputStream(new FileInputStream(savePath)); prop.load(in);} catch (Exception e) {return null;}return prop;}/** * 写入properties信息 * * @param key * 名称 * @param value * 值 */public static void modifyProperties(String key, String value) {try {// 从输入流中读取属性列表(键和元素对)Properties prop = getProperties();prop.setProperty(key, value);String path = TaskController.class.getResource("/config.properties").getPath();FileOutputStream outputFile = new FileOutputStream(path);prop.store(outputFile, "modify");outputFile.close();outputFile.flush();} catch (Exception e) {}}}
- 解决修改properties 属性文件存在缓存问题,附带操作properties文件工具类
- 解决修改properties 属性文件存在缓存问题,附带操作properties文件工具类
- 解决修改properties 属性文件存在缓存问题,附带操作properties文件工具类
- 操作properties属性文件
- 操作properties属性文件
- 操作properties属性文件
- java属性文件properties常用操作工具类
- Properties属性文件载入、读取工具类
- Java属性Properties文件读取工具类
- Java利用Properties类操作属性文件
- java操作.properties属性文件
- properties文件工具类
- 【java工具类】properties文件操作
- properties文件操作类
- java中properties属性文件的读写修改操作
- 解决properties文件乱码问题
- Java基础--Properties类操作.properties文件
- Java基础--Properties类操作.properties文件
- linux驱动基础开发2——linux 驱动开发前奏(模块编程)
- 拍照并保存文件的小例子
- event.stopPropagation() 和event.stopImmediat
- TCP三次握手/四次挥手详解
- 微信---风云际会霸天下
- 解决修改properties 属性文件存在缓存问题,附带操作properties文件工具类
- 用ml2 plugin配置OpenStack Neutron flat 网络
- 指针与内存, 指针数组,常量指针类笔记
- 如何用LinkedHashMap实现LRU缓存算法
- 【进阶】关于宏定义和内联函数
- Oracle基础知识(八) - 触发器的分类:系统触发器
- 优化JVM参数提高eclipse运行速度
- 设计模式(博客园精华集)
- MFC 多语言支持