Configutation读取properties文件信息
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());
}
// 读String
public static String getStringValue(String key) {
return cfg.getString(key);
}
// 读int
public static int getIntValue(String key) {
return cfg.getInt(key);
}
// 读boolean
public static boolean getBooleanValue(String key) {
return cfg.getBoolean(key);
}
// 读List
public 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
Configutation读取properties文件信息的更多相关文章
- java读取properties 文件信息
src下config/tank.properties文件 initTankCount=10 ReinitTankCount=8 Etmspeed=15 Mtmspeed=15 MTankCount ...
- spring boot --- 使用 注解 读取 properties 文件 信息
1.前言 以前使用spring MVC框架 ,读取properties 配置文件需要写一大堆东西 ,也许 那时候 不怎么使用注解 ,现在使用spring boot ,发现了非常简便的办法---使用注解 ...
- 用eclipse做项目中常遇到的问题-如何创建并读取properties文件
在用eclipse做项目开发的时候我们常常会将一些重要的内容写在配置文件里面, 特别是连接数据库的url,username,password等信息,我们常常会新建一个properties文件将所有信息 ...
- java读取properties配置文件信息
一.Java Properties类 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置 ...
- Java的Properties类和读取.properties文件
一..properties文件的作用 Properties属性文件在JAVA应用程序中是经常可以看得见的,也是特别重要的一类文件.它用来配置应用程序的一些信息,不过这些信息一般都是比较少的数据,没有必 ...
- java 读取properties文件总结
一.java读取properties文件总结 在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResource ...
- java基础学习总结——java读取properties文件总结
摘录自:http://www.cnblogs.com/xdp-gacl/p/3640211.html 一.java读取properties文件总结 在java项目中,操作properties文件是经常 ...
- Java读取properties文件连接数据库
先说为什么要有这种东西,或者我们为什么要用这种方式来写,先看经常用的方法,我们经常写的 package util; import java.sql.Connection; import java.sq ...
- Java读取properties文件工具类并解决控制台中文乱码
1.建立properts文件(error.message.properties) HTTP201= 请求成功并且服务器创建了新的资源 2.在spring-mvc.xml文件(applicationCo ...
随机推荐
- ios开发经常使用RGB色值
iOS中RGB经常使用的色值,同一时候可将对颜色的设置定义成宏,方便开发应用,如: // RGB颜色转换(16进制->10进制) #define UIColorFromRGB(rgbValue) ...
- NoSQL现状
经过了至少4年的激烈争论,现在是对NoSQL的现状做一个阶段性结论的时候了.围绕着NoSQL发生了如此之多的事情,以至于很难对其作出一个简单概括,也很难判断它达到了什么目标以及在什么方面没有达到预期. ...
- SharePoint JavaScript API in application pages
前言 最近,在SharePoint 应用程序页中写JavaScript API,进行一些数据交互.其实,很简单的事情却遇到了问题,记录一下,希望能对遇到类似问题的人以帮助. 引用JavaScript ...
- 关于android studio 出现Error:Execution failed for task ':app:preDebugAndroidTestBuild'. 的解决办法
Error:Execution failed for task ':app:preDebugAndroidTestBuild'. > Conflict with dependency 2018年 ...
- [转]Hadoop Hive sql语法详解
转自 : http://blog.csdn.net/hguisu/article/details/7256833 Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式 ...
- Java NIO Pipe
A Java NIO Pipe is a one-way data connection between two threads. A Pipe has a source channel and a ...
- SharePoint _layouts下自定义程序页面权限管理
在sharepoint中,_layouts下的自定义页面没有特别的权限,只要用户能访问sharepoint站点就可以访问_layouts下的自定义程序页面,现在我们需要给自定义页面做一下权限认证.要求 ...
- Context Application 使用总结 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 初学 Delphi 嵌入汇编[1] - 汇编语言与机器语言
非科班出身, 现在才接触汇编, 惭愧呀, 好好学! 主选课本是清华大学王爽老师的<汇编语言>. 推荐 王爽老师的汇编网 汇编语言之前是机器语言. 机器语言是机器指令的集合, 机器指令是一系 ...
- random_state 参数
SVC(random_state=0)里有参数 random_state random_state 相当于随机数种子,下面会有代码来解释其作用.图中设置了 random.seed() 就相当于在 SV ...