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 ...
随机推荐
- JAVA 解压压缩包中指定文件或实现压缩文件的预览及下载单个或多个指定的文件
业务逻辑中还要判读用户是否有此文件的防问权限 2017-04-20 新增文件与文件夹图标显示及过滤高亮显示功能: 2017-05-20 新增搜索向前及向后.及更新下载功能.更新文件路径显示: 测试地址 ...
- java nio 映射文件内容到内存
FileChannel 的一个最好的功能就是能将文件的某个部分直接映射到内存.这要感谢 FileChannel.map() 方法,这个方法有下面三个参数: mode:映射到内存需要指定下面三种模式之一 ...
- PHPthinking赠书了!
[站长赠书]2014年10月第一期幸运用户 大家好,我是PHP开发学习门户的站长,小站建站一个多月,感谢大家以来的关注和支持,假设大家对本站有什么建议或者投稿,欢迎留言或者给我发邮件. 本站宣布对于 ...
- Orchard模块开发全接触2:新建 ProductPart
一:创建 Part 1:项目引用 Orchard.Framework: 2:创建 Models 文件夹: 3:在 Models 文件夹下创建类 ProductPartRecord,如下: public ...
- [转] hive0.14-insert、update、delete操作测试
FROM : http://blog.csdn.net/hi_box/article/details/40820341 首先用最普通的建表语句建一个表: hive>create table te ...
- 使用ASP.NET AJAX与Bootstrap 弹窗解决方案
我在做采购系统时,因为使用了ASP.NET AJAX的UpdatePanel的控件,可以使得页面局部刷新显示.但是使用起来问题还是很多. 下面列出了一种情况,花了将近5个小时才算解决,虽然不是很完美, ...
- 细思极恐-你真的会写java吗?
导语 自2013年毕业后,今年已经是我工作的第4个年头了,总在做java相关的工作,终于有时间坐下来,写一篇关于java写法的一篇文章,来探讨一下如果你真的是一个java程序员,那你真的会写java吗 ...
- 命令行调用dubbo远程服务
命令行调用dubbo远程服务 telnet远程连接到dubbo telnet 127.0.0.1 20880 查看提供服务的接口 dubbo>ls com.test.service.TestIn ...
- [leetcode]Reverse Words in a String @ Python
原题地址:https://oj.leetcode.com/problems/reverse-words-in-a-string/ 题意: Given an input string, reverse ...
- 异常捕获 UncaughtExceptionHandler MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...