一 使用原生方式读取配置文件
1 文件系统加载
Java代码
InputStream in = new FileInputStream("config.properties");
Properties p = new Properties();
p.load(in);
2 类加载方式
A 与类同级目录
Java代码
InputStream in = Main.class.getResourceAsStream("config.properties");
B 在类的下一级目录
Java代码
InputStream in =
Main.class.getResourceAsStream("resource/config.properties");
C 指定加载资源配置文件的classes相对路径
Java代码
InputStream in =
Main.class.getResourceAsStream("/test/resource/config.properties");
注意事项:如上以/开头的是指从根目录开始加载。
D 使用类加载器的方式
Java代码
InputStream in = Main.class.getClassLoader().
getResourceAsStream("test/resource/config.properties");
E 资源配置文件在classes下
Java代码
InputStream in =
Main.class.getClassLoader().getResourceAsStream("config.properties");
二 使用apache提供的功能组件
参照网上相关资料
1 读取properties文件的方式
示例代码
Java代码
import java.util.List;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
public class PropertiesConfigurationDemo {
public static void main(String[] args) throws ConfigurationException {
Configuration config = new PropertiesConfiguration(PropertiesConfigurationDemo.class.getResource("system-config.properties"));
String ip = config.getString("ip");
String[] colors = config.getStringArray("colors.pie");
for (int i = 0; i < colors.length; i++) {
System.out.println(colors[i]);
}
List<?> colorList = config.getList("colors.pie");
for (int i = 0; i < colorList.size(); i++) {
System.out.println(colorList.get(i));
}
}
}
配置文件代码:
ip=10.10.1.1
colors.pie = #FF0000, #00FF00, #0000FF
2 读取XML文件的方式
Java代码
import java.util.List;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.XMLConfiguration;
public class XMLConfigurationDemo {
public static void main(String[] args) throws ConfigurationException {
Configuration config = new XMLConfiguration(XMLConfigurationDemo.class
.getResource("system-config.xml"));
String ip = config.getString("ip");
String account = config.getString("account");
String password = config.getString("password");
List<?> roles = config.getList("roles.role");
System.out.println("IP: " + ip);
System.out.println("Account: " + account);
System.out.println("Password: " + password);
for (int i = 0; i < roles.size(); i++) {
System.out.println("Role: " + roles.get(i));
}
}
}
Xml文件代码:
Xml代码
<config>
<ip>10.10.1.1</ip>
<account>jini</account>
<password>jakarta99</password>
<roles>
<role>admin</role>
<role>manager</role>
<role>user</role>
</roles>
</config>
示例2
Java代码
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.XMLConfiguration;
public class XmlConfigurationExample {
public static void main(String[] args) throws Exception,
ConfigurationException {
String resource = "main/global.xml";
Configuration config = new XMLConfiguration(resource);
// 只有new一个XMLConfiguration的实例就可以了.
List<?> startCriteria = config.getList("start-criteria.criteria");
for (int i = 0; i < startCriteria.size(); i++) {
System.out.println("Role: " + startCriteria.get(i));
}
int horsepower = config.getInt("horsepower");
System.out.println(horsepower);
}
}
global.xml文件代码
Xml代码
<?xml version="1.0" encoding="ISO-8859-1" ?>
<engine-config>
<start-criteria>
<criteria>
Temperature Above -10 Celsius
</criteria>
<criteria>
Fuel tank is not empty
</criteria>
</start-criteria>
<volume>4 Liters</volume>
<horsepower>42</horsepower>
</engine-config>
示例3:混合读取二种文件
Java代码
import java.util.List;
import org.apache.commons.configuration.CompositeConfiguration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.XMLConfiguration;
public class Test {
public static void main(String[] args) throws ConfigurationException {
CompositeConfiguration config = new CompositeConfiguration();
config.addConfiguration(new PropertiesConfiguration(
"main/global.properties"));
config.addConfiguration(new XMLConfiguration("main/global.xml"));
List<?> startCriteria = config.getList("start-criteria.criteria");
int horsepower = config.getInt("horsepower");
for (int i = 0; i < startCriteria.size(); i++) {
System.out.println("Role: " + startCriteria.get(i));
}
System.out.println(horsepower);
System.out.println("Speed: " + config.getFloat("speed"));
System.out.println("Names: " + config.getString("name"));
}
}
Xml如上所示,global.properties文件如下:
speed=50
name=Default User
示例4
Java代码
import java.net.URL;
import java.util.List;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationFactory;
public class PropertiesXmlConfigurationExample {
public static void main(String[] args) throws Exception {
ConfigurationFactory factory = new ConfigurationFactory();
URL configURL = PropertiesXmlConfigurationExample.class.getResource("additional-xml-configuration.xml");
factory.setConfigurationURL(configURL);
Configuration config = factory.getConfiguration();
List<?> startCriteria = config.getList("start-criteria.criteria");
for (int i = 0; i < startCriteria.size(); i++) {
System.out.println("Role: " + startCriteria.get(i));
}
int horsepower = config.getInt("horsepower");
System.out.println("Horsepower: " + horsepower);
System.out.println("Speed: " + config.getFloat("speed"));
System.out.println("Names: " + config.getString("name"));
}
}
additional-xml-configuration.xml文件内容:
Xml代码
<?xml version="1.0" encoding="ISO-8859-1" ?>
<configuration>
<properties fileName="global.properties"/>
<xml fileName="global.xml"/>
</configuration>
相关API说明:
# PropertiesConfiguration 从一个 property 文件中加载配置 .
# XMLConfiguration 从 XML 文件中加载配置信息 .
# XMLPropertyListConfiguration 也可以读取 XML 被 Mac OSX 使用变量 .
# JNDIConfiguration 利用 jndi 树的一个键值,可以返回一个值,这个值来作为配置信息
# BaseConfiguration 访问内存中的一个配置对象 .
# HierarchicalConfiguration 一个在内存中的配置对象,这个对象可以处理复杂的数据结构 .
# SystemConfiguration 一个利用系统属性的配置信息
# ConfigurationConverter 把 java.util.Properties 或者 org.apache.collections.commons.ExtendedProperties 转化为一个 Configuration 对象
参考资料:
common-configuration读取xml,properties文件
http://javamy.iteye.com/blog/252619
使用apache common configuration读取配置文件或修改配置文件
http://www.suneca.com/article.asp?id=9
- java加载配置文件
有时候一些变量可能会变,但直接写在程序代码中不好,因为有时候需要改的时候要改动源代码,这时候可以使用配置文件来管理.比如数据库中的端口和密码. 1. 把.properties配置文件放在src目录下. ...
- Spring 加载配置文件的方式
我们常用的加载context文件的方法有如下三个: 1.FileSystemXmlApplicationContext 这个方法是从文件绝对路径加载配置文件,例如: ApplicationContex ...
- java加载配置文件的三种方式
比如我们要加载db.properties文件 如图: 比如我们要加载source目录下的db.properties文件.就有以下几种方式 第一种是文件io流: public static void l ...
- SpringMvc的创建流程以及2种加载配置文件的方式
1.首先创建个web项目,第一步导入相应的jar包,并且buildtoPath 2.用elipse或myeclipse点击进入web.xml中 按住 Alt+ / 有个提示 找到前面带 #Dispat ...
- Spring中加载配置文件的方式
原文:http://blog.csdn.net/snowjlz/article/details/8158560 Spring 中加载XML配置文件的方式,好像有3种, XML是最常见的Spring 应 ...
- Spring笔记02(3种加载配置文件的方式)
1.不使用Spring的实例: 01.Animal接口对应的代码: package cn.pb.dao; /** * 动物接口 */ public interface Animal { //吃饭 St ...
- Java加载配置文件类
/** * 对应配置文件类, */ package com.up72.parkSys.ThirdParty; import java.io.IOException;import java.io.In ...
- java加载配置文件信息
#基金数据存放根目录fund_save_root_path=E:/fundCrawling #龙虎榜数据存放根目录long_hu_root_path=E:/longHuCrawling #巨潮数据存放 ...
- Java中加载配置文件的集中方式,以及利用ClassLoader加载文件 .
我们往常进行文件的加载的时候 用到的都是 FileInputStream进行 文件的加载比如下面一个例子 : InputStream in=FileInputStream("1.prope ...
随机推荐
- BIND9源码分析之UDP数据处理
本文简要介绍一下BIND9中的UDP数据处理,包括如何创建socket.设置什么socket参数.多线程环境中如何让多个线程读取53端口的数据等等. BIND9的架构采用event-driven和ta ...
- JAVA常见异常解析
1. java.lang.nullpointerexception 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对 ...
- HDUOJ----1165Eddy's research II
Eddy's research II Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- 使用git 将自己的本地文件git到github上面的完整过程
1. 首先在github网站上新建一个仓库,复制仓库地址(HTTP形式或者SSH形式,后者利用SSH,在最后一步push 的时候可以不用输入用户名和密码). 2. 在本地某个你想要的(文件夹)目录 ...
- RabbitMQ消息队列(一): Detailed Introduction 详细介绍[转]
1. 历史 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有 ...
- Python学习笔记015——文件file的常规操作(二进制文件)
有时候诸如图片.音乐等信息不是以文本的形式存储的,而是二进制文件格式存储的. 有时候很多信息不是以文本文件的形式存储的 很多时候,都需要用到二进制读取文件.毕竟很多信息不是以文本的形式存储.例如:图片 ...
- Python练习笔记——编写一个装饰器,测算出一个函数的运行时间
import time def time_value(dec): def wrapper(*args,**kwargs): start_time = time.time() get_str = dec ...
- SSAS 笔记
SQL SERVER 2000创建多维数据集对应的cub文件 http://blog.csdn.net/zklth/article/details/6367816 http://msdn. ...
- Android使用DrawerLayout仿qq6.6版本侧滑效果
一讲到侧滑菜单,我相信大家都会想到一个开源控件SlidingMenu,在google还没有出来DrawerLayout的时候几乎都是使用Slidingmenu来实现侧滑效果,可以说是效果很不错,自 ...
- 超低压差LDO XC6206P332MR
XC6206:It is selectable in 0.1V increments within a range of 1.2V to 5.0V. 可实现压差为0.1V的降压,最大输出电流200毫安 ...