- 浏览: 146422 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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人的方向在哪里?看两个故事
读取修改配置文件
分类: 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 670http://zz563143188.iteye.com/bl ... -
Java中HashMap和TreeMap的区别深入理解
2014-05-27 16:54 690Java中HashMap和TreeMap的区别深入理解 博客 ... -
java动态代理学习笔记
2014-05-09 09:48 448java动态代理学习笔记 博客分类: java JavaCC ... -
[置顶] 这些年收藏的技术大牛的博客分享(后续还会继续更新)大家可以在评论中分享自己关注的
2014-04-28 00:41 644大家也可以在评论中分享自己关注的博客 个人感觉一些比较好的。 ... -
浅谈Java中的equals和==
2014-04-24 00:08 647浅谈Java中的equals和== 在初学Java时, ... -
由浅入深分析mybatis通过动态代理实现拦截器(插件)的原理
2014-04-03 01:53 998由浅入深分析mybatis通过动态代理实现拦截器(插件) ... -
Java开发的一些小经验一(判断字符串是否为空)
2014-04-02 01:58 1200在做Java开发的过程中,经常会有一些这样或那样的错误,这些 ... -
Java性能调优续
2014-03-17 08:34 593Java性能调优续 3.2 字 ... -
Java多线程笔记6-ThreadPoolExecutor/ExecutorService
2014-01-13 18:22 1060Java多线程笔记6-ThreadPoolExecutor/ ... -
url中文参数传递乱码
2013-11-14 18:49 771我这样就行了啊 XML/HTML code? ... -
一个简单的Web服务器(Web服务器如何工作)
2013-10-22 20:13 702一个简单的Web服务器(Web服务器如何工作) ... -
小记wsdl2java
2013-10-22 20:07 1307缘由要实现协同工作,在不同的平台交换数据,是以有一个wsdl ... -
总结 20 个开发细节
2013-09-28 01:30 700总结 20 个开发细节 博客分类: 研发管理 ... -
org.w3c.dom(java dom)解析XML文档
2013-07-19 21:06 961org.w3c.dom(java dom)解析XML文档 ... -
【摘抄】同步和争用以及减少争用的手段
2013-06-26 23:29 697【摘抄】同步和争用以及减少争用的手段 博客 ... -
SimpleDateFormat使用详解(转载)
2013-06-26 23:03 7public class SimpleDateFormat ... -
SimpleDateFormat性能调优(转载)
2013-06-26 23:01 2602博客分类: java 多线程华为Mapreduc ... -
java 加密
2013-02-23 21:02 1453本篇内容简要介绍BASE64、MD5、SHA、HMAC ...
相关推荐
本文将详细讲解如何在Winform中读取和修改配置文件,特别是`appSettings`部分,这对于大多数桌面应用来说是至关重要的功能。 配置文件在.NET Framework中通常以`.config`为扩展名,例如`app.config`或`web.config`...
在这个“读取xml配置文件的flash导航菜单”项目中,开发人员创建了一个动态的Flash菜单系统,该系统能够从外部XML文件中获取其配置信息,从而实现菜单项的动态加载和更新。下面将详细解释这个技术实现的各个方面。 ...
### C# .NET读取INI配置文件的知识点详解 #### 一、概述 在软件开发过程中,经常会遇到需要根据不同的环境或用户需求调整程序配置的情况。例如,更改数据库连接字符串、FTP登录凭证等。传统的做法是在代码中硬编码...
本篇文章将详细探讨如何通过Python来读取并解析`.properties`配置文件。 首先,了解`.properties`文件的格式。这种文件通常用于存储配置信息,其中键值对以等号`=`分隔,每一行代表一个键值对,注释以`#`或`!`开始...
C# 读取配置文件详解教程 配置文件是 C# 中的一个重要概念,它允许开发人员存储和读取应用程序的配置信息。配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的。开发人员可以使用配置文件来更改设置,而不必...
使用 XML 作为配置文件有很多好处,例如可以轻松地更改配置项,而不需要修改代码。 在读取 XML 配置文件时,有多种解析器可以选择,主要有 DOM 和 SAX 两种。DOM 解析器将整个 XML 文件加载到内存中,然后进行解析...
本模块提供了一种在Ubuntu环境下使用C++读取INI配置文件的方法,使得开发者能方便地获取和修改配置信息。以下是关于这个功能模块的关键知识点和实现细节: 1. **INI文件格式**:INI文件是一种简单的文本格式,通常...
配置文件通常用于存储应用程序的设置,如数据库连接信息、服务器端口、第三方服务的API密钥等,这些信息可能需要根据不同的环境或需求进行更改。在Java中,我们可以使用多种方法来读取配置文件,下面将详细介绍几种...
在本案例中,我们将讨论如何使用Qt库在界面上进行`config_ini`配置文件的读取和写入操作。 Qt是一个跨平台的C++图形用户界面应用程序开发框架,提供了丰富的API用于处理文件I/O和GUI构建。对于`config.ini`文件的...
在实际项目中,可能需要在程序启动时自动加载配置文件,或者在用户更改设置后保存新的配置。这可以通过事件结构实现,如程序初始化时触发的"Program Start"事件中读取配置,而在用户按下“保存”按钮时触发的用户...
本示例着重介绍如何在不修改源代码的情况下,通过VC++实现对配置文件的读取和动态更新。 首先,我们需要理解配置文件的基本结构。以常见的INI文件为例,它由多个节(Section)组成,每个节下可以有多个键值对(Key-...
只要更改 XML 配置文件,就可以正常运行。 例如,我们可以定义一个 XML 配置文件 myenv.xml,内容如下: ```xml <dbhost>localhost <dbname>sqlname <dbuser>username <dbpassword>password ``` 这个 ...
总之,"unity读取excel配置文件插件"是Unity开发者的重要工具,它简化了游戏配置数据的管理,让策划人员能够更轻松地修改Excel表格,同时保持代码与数据的分离。通过熟练掌握这种插件的使用,你可以提高开发效率,使...
在Java编程中,读取配置文件是常见的任务,它允许我们分离应用程序的配置信息,使得配置可以在不修改源代码的情况下更改。本示例将详细解释如何使用Java来读取configuration配置文件中的内容,以实现更灵活和可维护...
这种方式更适用于配置文件位于项目外部或者需要动态更改配置文件的情况。例如,如果配置文件位于`/path/to/config/applicationContext.xml`,则可以这样创建上下文: ```java ApplicationContext context = new ...
在Microsoft .NET Framework环境下,C#作为主要的编程语言,提供了丰富的类库来处理各种文件类型,包括传统的INI配置文件。INI文件是一种简单的文本格式,常用于存储应用程序的配置信息,如设置、选项等。在Visual ...
在C#编程中,配置文件是一个非常重要的组成部分,它允许开发者在不修改代码的情况下更改应用程序的行为。本篇文章将深入探讨如何使用C#通过配置文件读取数据库连接字符串和其他配置值,以及这样做的好处。 首先,...
- **配置更新**:如果配置文件在运行时更改,可能需要重新加载或监听文件变化。 通过上述方法,你可以有效地在C++程序中读取和解析TXT格式的配置文件,灵活地管理应用程序的行为。在实际项目中,可能还会使用第三...
本文将详细介绍如何在Android项目中读取存放在`assets`文件夹中的`ini`配置文件。 1. **ini文件格式介绍** `ini`文件是一种轻量级的配置文件格式,主要用于存储键值对数据。通常,每个节(section)以方括号`[]`...
本文将详细介绍如何在Java中读取`properties`配置文件。 首先,我们需要了解`properties`文件的格式。一个标准的`.properties`文件通常包含多个行,每行由一个键和一个值组成,它们之间用等号(`=`)或冒号(`:`)...