- 浏览: 138704 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (152)
- 异常以及异常处理框架探析 (1)
- java语法 (18)
- 职场生活 (8)
- js前端 (9)
- Tomcat (8)
- java架构 (23)
- .Net (2)
- Linux (4)
- Spring (6)
- Nginx (7)
- 设计模式 (3)
- JVM (4)
- 数据库 (2)
- 智力题 (1)
- SVN (1)
- Maven (3)
- MYSQL (5)
- java线程池2-任务队列的规则 (1)
- 英语学习 (1)
- 面试题 (7)
- MyBatis (2)
- 并发 (3)
- Memcache (2)
- XML (1)
- Hadoop (1)
- Web容器 (1)
- Struts2 (2)
- 产品运营 (1)
- 安全 (1)
- Mongodb (1)
- Shell (0)
- 恋爱 (1)
- 简单对象访问协议 (1)
- mybatis优化(转) (1)
- 算法 (1)
- Redis (2)
- Spring MVC数据绑定大全 (1)
- 错误搜集 (1)
- IDEA (1)
最新评论
-
sunshine_love:
故事里的事说是就是不是也是 故事里的事说不是就不是是也不是 故 ...
在这个变化的年代,IT人的方向在哪里?看两个故事
读取修改配置文件
- 博客分类:
- java语法
读取修改配置文件
分类: util类 2014-07-15 14:37 37人阅读 评论(0) 收藏 举报
ResourceBundle
PropertiesUtil.class.getClassLoader().getResource
PropertiesLoaderUtils.loadProperties(new ClassPathResource(propertyName));
[java] view plaincopy
package com.ffcs.aaa.utils;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.ResourceBundle;
import org.apache.log4j.Logger;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PropertiesLoaderUtils;
public class PropertiesUtil {
static Logger log = Logger.getLogger("smsTaskLog");
/**
* 获取指定配置文件中所以的数据
*
* @param propertyName
* 调用方式: 1.配置文件放在resource源包下,不用加后缀
* PropertiesUtil.loadWarningMessage("warn_message"); 2.放在包里面的
* PropertiesUtil.loadWarningMessage("com.test.message");
* @return
*/
public static Map<String, String> loadProperties(String propertyName) {
// 获得资源包
ResourceBundle rb=null;
try {rb = ResourceBundle.getBundle(propertyName.trim());
} catch (Exception e) {log.error(e.getMessage()); }
// 通过资源包拿到所有的key
Enumeration<String> allKey = rb.getKeys();
// 遍历key 得到 value
Map<String, String> messageMap=new HashMap<String, String>();
while (allKey.hasMoreElements()) {
String key = allKey.nextElement();
String value = (String) rb.getString(key);
messageMap.put(key, value);
}
return messageMap;
}
/**
* 传递键值对的Map,更新properties文件
*
* @param fileName
* 文件名(放在resource源包目录下),需要后缀 warn_message.properties
* @param keyValueMap
* 键值对Map
*/
public static void updateProperties(String fileName,Map<String, String> keyValueMap) {
//getResource方法使用了utf-8对路径信息进行了编码,当路径中存在中文和空格时,他会对这些字符进行转换,这样,
//得到的往往不是我们想要的真实路径,在此,调用了URLDecoder的decode方法进行解码,以便得到原始的中文及空格路径。
String filePath = PropertiesUtil.class.getClassLoader().getResource(fileName).getFile();
Properties props = null;
BufferedWriter bw = null;
try {
filePath = URLDecoder.decode(filePath,"utf-8");
log.debug("updateProperties propertiesPath:" + filePath);
props = PropertiesLoaderUtils.loadProperties(new ClassPathResource(fileName));
// log.debug("updateProperties old:"+props);
// 写入属性文件
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath)));
props.clear();// 清空旧的文件
for (String key : keyValueMap.keySet())
props.setProperty(key, keyValueMap.get(key));
log.debug("updateProperties new:"+props);
props.store(bw, "");
} catch (IOException e) {
log.error(e.getMessage());
} finally {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 判断指定配置文件中是否存在该项 Spring 提供的 PropertiesLoaderUtils 允许您直接通过基于类路径的文件地址加载属性资源
* 最大的好处就是:实时加载配置文件,修改后立即生效,不必重启
*
* @param propertyName
* 要加上后缀:warn_message.properties
* @param key
* @return true:false
*/
public static boolean containKey(String propertyName, String key) {
Properties props = null;
try {
props = PropertiesLoaderUtils.loadProperties(new ClassPathResource(propertyName));
} catch (IOException e) {
log.error(e.getMessage());
}
log.debug("props content:"+props);
return props.containsKey(key);
}
private void test() {
List<String> l = new ArrayList<String>();
l.add("192.168.14.63");l.add("192.168.14.62");l.add("192.168.14.61");
Map<String, String> map = new HashMap<String, String>();
for (String key : l) {
boolean containKey = PropertiesUtil.containKey("warn_message.properties", key);
log.debug(key+":"+containKey);
map.put(key, "");
}
PropertiesUtil.updateProperties("message.properties", map);
System.out.println("================================================");
for (String key : l) {
boolean containKey = PropertiesUtil.containKey("warn_message.properties", key);
log.debug(key+":"+containKey);
map.put(key, "");
}
}
public static void main(String[] args) {
loadProperties("a");
}
}
分类: util类 2014-07-15 14:37 37人阅读 评论(0) 收藏 举报
ResourceBundle
PropertiesUtil.class.getClassLoader().getResource
PropertiesLoaderUtils.loadProperties(new ClassPathResource(propertyName));
[java] view plaincopy
package com.ffcs.aaa.utils;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.ResourceBundle;
import org.apache.log4j.Logger;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PropertiesLoaderUtils;
public class PropertiesUtil {
static Logger log = Logger.getLogger("smsTaskLog");
/**
* 获取指定配置文件中所以的数据
*
* @param propertyName
* 调用方式: 1.配置文件放在resource源包下,不用加后缀
* PropertiesUtil.loadWarningMessage("warn_message"); 2.放在包里面的
* PropertiesUtil.loadWarningMessage("com.test.message");
* @return
*/
public static Map<String, String> loadProperties(String propertyName) {
// 获得资源包
ResourceBundle rb=null;
try {rb = ResourceBundle.getBundle(propertyName.trim());
} catch (Exception e) {log.error(e.getMessage()); }
// 通过资源包拿到所有的key
Enumeration<String> allKey = rb.getKeys();
// 遍历key 得到 value
Map<String, String> messageMap=new HashMap<String, String>();
while (allKey.hasMoreElements()) {
String key = allKey.nextElement();
String value = (String) rb.getString(key);
messageMap.put(key, value);
}
return messageMap;
}
/**
* 传递键值对的Map,更新properties文件
*
* @param fileName
* 文件名(放在resource源包目录下),需要后缀 warn_message.properties
* @param keyValueMap
* 键值对Map
*/
public static void updateProperties(String fileName,Map<String, String> keyValueMap) {
//getResource方法使用了utf-8对路径信息进行了编码,当路径中存在中文和空格时,他会对这些字符进行转换,这样,
//得到的往往不是我们想要的真实路径,在此,调用了URLDecoder的decode方法进行解码,以便得到原始的中文及空格路径。
String filePath = PropertiesUtil.class.getClassLoader().getResource(fileName).getFile();
Properties props = null;
BufferedWriter bw = null;
try {
filePath = URLDecoder.decode(filePath,"utf-8");
log.debug("updateProperties propertiesPath:" + filePath);
props = PropertiesLoaderUtils.loadProperties(new ClassPathResource(fileName));
// log.debug("updateProperties old:"+props);
// 写入属性文件
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath)));
props.clear();// 清空旧的文件
for (String key : keyValueMap.keySet())
props.setProperty(key, keyValueMap.get(key));
log.debug("updateProperties new:"+props);
props.store(bw, "");
} catch (IOException e) {
log.error(e.getMessage());
} finally {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 判断指定配置文件中是否存在该项 Spring 提供的 PropertiesLoaderUtils 允许您直接通过基于类路径的文件地址加载属性资源
* 最大的好处就是:实时加载配置文件,修改后立即生效,不必重启
*
* @param propertyName
* 要加上后缀:warn_message.properties
* @param key
* @return true:false
*/
public static boolean containKey(String propertyName, String key) {
Properties props = null;
try {
props = PropertiesLoaderUtils.loadProperties(new ClassPathResource(propertyName));
} catch (IOException e) {
log.error(e.getMessage());
}
log.debug("props content:"+props);
return props.containsKey(key);
}
private void test() {
List<String> l = new ArrayList<String>();
l.add("192.168.14.63");l.add("192.168.14.62");l.add("192.168.14.61");
Map<String, String> map = new HashMap<String, String>();
for (String key : l) {
boolean containKey = PropertiesUtil.containKey("warn_message.properties", key);
log.debug(key+":"+containKey);
map.put(key, "");
}
PropertiesUtil.updateProperties("message.properties", map);
System.out.println("================================================");
for (String key : l) {
boolean containKey = PropertiesUtil.containKey("warn_message.properties", key);
log.debug(key+":"+containKey);
map.put(key, "");
}
}
public static void main(String[] args) {
loadProperties("a");
}
}
发表评论
-
Jconsole、jvisualvm工具介绍
2014-07-27 08:52 605http://zz563143188.iteye.com/bl ... -
Java中HashMap和TreeMap的区别深入理解
2014-05-27 16:54 658Java中HashMap和TreeMap的区别深入理解 博客 ... -
java动态代理学习笔记
2014-05-09 09:48 383java动态代理学习笔记 博客分类: java JavaCC ... -
[置顶] 这些年收藏的技术大牛的博客分享(后续还会继续更新)大家可以在评论中分享自己关注的
2014-04-28 00:41 583大家也可以在评论中分享自己关注的博客 个人感觉一些比较好的。 ... -
浅谈Java中的equals和==
2014-04-24 00:08 590浅谈Java中的equals和== 在初学Java时, ... -
由浅入深分析mybatis通过动态代理实现拦截器(插件)的原理
2014-04-03 01:53 947由浅入深分析mybatis通过动态代理实现拦截器(插件) ... -
Java开发的一些小经验一(判断字符串是否为空)
2014-04-02 01:58 1166在做Java开发的过程中,经常会有一些这样或那样的错误,这些 ... -
Java性能调优续
2014-03-17 08:34 531Java性能调优续 3.2 字 ... -
Java多线程笔记6-ThreadPoolExecutor/ExecutorService
2014-01-13 18:22 1018Java多线程笔记6-ThreadPoolExecutor/ ... -
url中文参数传递乱码
2013-11-14 18:49 736我这样就行了啊 XML/HTML code? ... -
一个简单的Web服务器(Web服务器如何工作)
2013-10-22 20:13 645一个简单的Web服务器(Web服务器如何工作) ... -
小记wsdl2java
2013-10-22 20:07 1204缘由要实现协同工作,在不同的平台交换数据,是以有一个wsdl ... -
总结 20 个开发细节
2013-09-28 01:30 669总结 20 个开发细节 博客分类: 研发管理 ... -
org.w3c.dom(java dom)解析XML文档
2013-07-19 21:06 901org.w3c.dom(java dom)解析XML文档 ... -
【摘抄】同步和争用以及减少争用的手段
2013-06-26 23:29 630【摘抄】同步和争用以及减少争用的手段 博客 ... -
SimpleDateFormat使用详解(转载)
2013-06-26 23:03 7public class SimpleDateFormat ... -
SimpleDateFormat性能调优(转载)
2013-06-26 23:01 2562博客分类: java 多线程华为Mapreduc ... -
java 加密
2013-02-23 21:02 1344本篇内容简要介绍BASE64、MD5、SHA、HMAC ...
相关推荐
通过按钮,读取配置文件,并修改自定义配置文件appSettings中的值.这是一个很简单的dome.
自做的读取xml配置文件的flash导航菜单,带fla源文件。
通过此工具可以更好的在unity中读取配置文件excel格式文件信息,动态修改数据
VC读取可以配置文件是比较简单的,但是有时候需要在配置文件增加一些项目,多数时候需要修改代码,我这个简单的例子实现了增加配置文件,但是不需要修改代码的功能,具体应用的时候可以参考思路。
使用c++语言使用spdlog日志功能,创建新的message类进行包装,读取外部配置文件进行快速使用,好处可以不用每次都得make程序,只需要修改配置文件就可以直接运行程序
C#读取修改Json文件
用vb编写的对INI文件内容读取写入修改的例子.
读取并正常显示配置文件(.properties),保存修改之后的信息;包含源码和运行命令,
.net、C#、读取指定路径的配置文件配置文件。如配置文件如下: [UserInfo] Id=1001 Name=de 可以读取其Id的值以及修改都可以的
JAVA读取数据库的XML配置文件. 前言.虽然现在有HEIBERNATE开源框架做为持久层...通过读取XML配置文件来方便用户随时更改数据库配置文件... 申明:以下代码是我的研究心血,转载请保留作者名称.为了方便JSP初学者而共享...
在项目中我们经常要把某些常量放在配置文件中,这样修改起来会比较方便,这个工具类可以帮我们直接在java类中读取配置文件内容
利用JAVA代码,读取自己添加的XML配置文件,配置文件可以随便修改,不影响代码
项目中,经常把一部分功能独立出来,做一个java project,然后打成jar包供其他项目引用...这时候,如果jar包中需要读取配置文件信息,则很少把该配置打进jar包,因为它不方便修改,更多都是采用jar包读取外部配置文件。
在原作者的基础上进行修改的,需要C请去https://download.csdn.net/download/taoyuanmin/9179573下载,或者再次修改即可
这个工程是使用 java 来使用反射的原理读取 *.proproies 资源文件中的一些配置信息。利用此方法可以在没有使用框架的情况下可以让你的程序更加灵活易于修改。如:可以将一些数据库配置信息,重要信息写入到资源文件...
通过修改或编写配置文件,来修改或创建控件属性或方法。实现界面可配置化。
在C#中,可以利用配置文件来保存用户修改的信息,比如登录时保存用户的信息
读取配置文件 ReadIniData(string Section, string Key, string NoText, string iniFilePath) 写入配置文件 WriteIniData(string Section, string Key, string Value, string iniFilePath)
通过按钮,读取配置文件,并修改自定义配置文件appSettings中的值.这是一个很简单的dome.
本想基于流的参数将 读取, 添加, 删除, 修改 配置文件的函数全部实现. 但发现 删除 , 修改 需要重新打开流, 单纯传入一个流参数不能方便实现. 以下是读取, 添加 配置的函数实现. "oper_config.h" #ifndef OPER_...