commons configuration可以很方便的访问配置文件和xml文件中的的内容。Commons Configuration 是为了提供对属性文件、XML文件、JNDI资源、来自JDBC Datasource数据的访问。

  官方文档:http://commons.apache.org/proper/commons-configuration/

我们研究configuration1版本的,最新的是2的版本,暂时没使用。

1、Maven中引入相关的jar

<!-- 配置文件读取 --><dependency><groupId>commons-configuration</groupId><artifactId>commons-configuration</artifactId><version>1.5</version></dependency><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.10</version></dependency>

2、读取properties文件的内容

(1)新建一个data.properties

name=parry
port=21
flag=true
users=Tom,parry

(2)工具类读取

package icp;import java.util.List;import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;public class Test {public static final String fileName = "data.properties";public static PropertiesConfiguration cfg = null;static {try {cfg = new PropertiesConfiguration(fileName);} catch (ConfigurationException e) {e.printStackTrace();}// 当文件的内容发生改变时,配置对象也会刷新cfg.setReloadingStrategy(new FileChangedReloadingStrategy());}// 读Stringpublic static String getStringValue(String key) {return cfg.getString(key);}// 读intpublic static int getIntValue(String key) {return cfg.getInt(key);}// 读booleanpublic static boolean getBooleanValue(String key) {return cfg.getBoolean(key);}// 读Listpublic static List<?> getListValue(String key) {return cfg.getList(key);}// 读数组public static String[] getArrayValue(String key) {return cfg.getStringArray(key);}}

(3)测试

public static void main(String[] args) {String name = Test.getStringValue("name");System.out.println("name:" + name);int port = Test.getIntValue("port");System.out.println("port:" + port);boolean flag = Test.getBooleanValue("flag");System.out.println("flag:" + flag);List<String> users = (List<String>) Test.getListValue("users");for (String user : users) {System.out.println("user:" + user);}}

3、读取XML配置文件

(1)新建一个XMl文件

<?xml version="1.0" encoding="UTF-8"?>
<config><database><url>127.0.0.1</url><port>1521</port><login>admin</login><password>pass</password></database>
</config>

(2)读取XML配置的工具文件

package icp;import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;public class XmlTest {public static final String fileName = "XMLProperties.xml";public static XMLConfiguration cfg = null;static {try {cfg = new XMLConfiguration(fileName);} catch (ConfigurationException e) {e.printStackTrace();}// 配置文件 发生变化就重新加载cfg.setReloadingStrategy(new FileChangedReloadingStrategy());}public static String getStringValue(String key) {return cfg.getString(key);}public static int getIntValue(String key) {return cfg.getInt(key);}
}

这里只是添加读取String 和读取Int的方法,其他的方法类似。

(3)测试

public static void main(String[] args) {String url = XmlTest.getStringValue("database.url");System.out.println("url:" + url);int port =XmlTest.getIntValue("database.port");System.out.println("port:"+port);}

由于项目中,经常有多个配置文件,最后提供一个工具类:

public class PropertiesUtil {public static Map<String, Object> configMap = new ConcurrentHashMap<String, Object>();public static String getStringValue(String fileName, String key) {if (!configMap.containsKey(key)) {PropertiesUtil.initConfig(fileName);}if (fileName.endsWith(".properties")) {PropertiesConfiguration cfg = (PropertiesConfiguration) configMap.get(fileName);return cfg.getString(key);} else if (fileName.endsWith(".xml")) {XMLConfiguration cfg = (XMLConfiguration) configMap.get(fileName);return cfg.getString(key);}return null;}private static void initConfig(String fileName) {try {if (fileName.endsWith(".xml")) {XMLConfiguration cfg = new XMLConfiguration(fileName);configMap.put(fileName, cfg);} else if (fileName.endsWith(".properties")) {PropertiesConfiguration cfg = new PropertiesConfiguration(fileName);configMap.put(fileName, cfg);}} catch (ConfigurationException e) {e.printStackTrace();}}
}

测试:

public static void main(String[] args) {String name= PropertiesUtil.getStringValue("data.properties", "name");System.out.println(name);String url = PropertiesUtil.getStringValue("data.xml", "database.url");System.out.println(url);}

非原创,来源地址:https://www.cnblogs.com/parryyang/p/6197685.html

转载于:https://www.cnblogs.com/lr393993507/p/9577712.html

Configutation读取properties文件信息相关推荐

  1. 读取*.properties文件的配置信息

    FileName:配置文件的文件名(带后缀) key:想要读取配置文件中的关键字key(如下图红框中的key) public static String GetValues(String FileNa ...

  2. Java基础学习总结(15)——java读取properties文件总结

    2019独角兽企业重金招聘Python工程师标准>>> 一.java读取properties文件总结 在java项目中,操作properties文件是经常要做的,因为很多的配置信息都 ...

  3. Spring 如何读取properties文件内容

    http://hi.baidu.com/alizv/blog/item/d8cb2af4094662dbf3d38539.html 在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置 ...

  4. properties文件及ResourceBundle读取properties文件分析

    一.properties文件介绍 java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是 "键=值& ...

  5. java读取properties文件_Java读取Properties文件的六种方法

    Java读取Properties文件有以下六种方法: 1.使用java.util.Properties类的load()方法String fileName="E:/system.propert ...

  6. java读取mysql数据库配置文件_java读取properties文件的方法

    Java 读写Properties配置文件 Java 读写Properties配置文件 1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实 ...

  7. java中读取properties文件内容五种方式

    一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC ...

  8. SpringMVC通过注解方式读取properties文件中的值

    为什么80%的码农都做不了架构师?>>>    本方法是结合Java配置及XML配置来完成. 首先定义XML配置文件 app.xml: <?xml version=" ...

  9. 读取properties文件

    为什么80%的码农都做不了架构师?>>>    Java 开发中,需要将一些易变的配置参数放置再 XML 配置文件或者 properties 配置文件中.然而 XML 配置文件需要通 ...

最新文章

  1. nodejs中npm常用命令
  2. 这个口罩小朋友戴上就不肯脱!真相原来是这样!
  3. python json转换字典_Python json转字典字符方法实例解析
  4. 前端面试---Vue部分考点梳理
  5. Bailian3244 跳水比赛【水题】
  6. 亚像素边缘提取方法总结
  7. Xeen的Source Safe 备份
  8. 关于电脑主板RS-232串口定义
  9. 网站广告两侧html,网页特效代码网页左右两侧居中的对联广告代码
  10. 如何面试软件工程师 看这篇就够了
  11. HTTP协议简介和系统命令curl,AIP调用 (ELK中运用)
  12. APP测试面试题,总结的很到位,安排!
  13. 微信小程序_页面加载不出来/页面跳转不成功的若干可能原因
  14. 关于微信公众号文章编辑器不能直接编辑html样式的处理方法
  15. JavaScript课堂笔记
  16. js控制html控件显示隐藏和是否可用
  17. Editplus各个版本(最新版本是5.3)注册码下载
  18. TCP/IP高频考点之一个数据包的流浪日记
  19. VS2017 无法启动 IIS EXPRESS Web 服务器。 工作进程未能正确初始化,因而无法启动。返回的数据为错误信息。已解决!!!
  20. 华三交换机配置access命令_h3c交换机配置命令

热门文章

  1. python 网络编程----非阻塞或异步编程
  2. 由Qt中qApp想到的(这是单例模式么???)
  3. Java 结构体之 JavaStruct 使用教程三 JavaStruct 数组进阶
  4. 前端学习(3304):函数组件组件父组件子组件forwarRef聚焦
  5. react(93)--成功置空
  6. 前端学习(3147):react-hello-react之getBeforeUpdate
  7. [html] 说说你对移动优先布局的理解
  8. 25利他行为可以学习和模仿吗
  9. 工作383-获取页面的宽度
  10. [css] 说说你对低版本IE的盒子模型的理解