一 使用原生方式读取配置文件
1 文件系统加载
InputStream in = new FileInputStream("config.properties");
Properties p = new Properties();
p.load(in);
2 类加载方式
A 与类同级目录
InputStream in = Main.class.getResourceAsStream("config.properties");
B 在类的下一级目录
InputStream in =
Main.class.getResourceAsStream("resource/config.properties");
C 指定加载资源配置文件的classes相对路径
InputStream in =
Main.class.getResourceAsStream("/test/resource/config.properties");
注意事项:如上以/开头的是指从根目录开始加载。
D 使用类加载器的方式
InputStream in = Main.class.getClassLoader().
getResourceAsStream("test/resource/config.properties");
E 资源配置文件在classes下
InputStream in =
Main.class.getClassLoader().getResourceAsStream("config.properties");
二 使用apache提供的功能组件
它使用了大量的apache-commons其它组件,很麻烦
参照网上相关资料
1 读取properties文件的方式
示例代码
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);
}
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文件的方式
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文件代码:
<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
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 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:混合读取二种文件
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
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 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 对象
参考资料:
Jakarta-Common-Configuration使用笔记
http://blog.csdn.net/kunshan_shenbin/archive/2008/01/24/2062542.as
common-configuration读取xml,properties文件
http://javamy.iteye.com/blog/252619
使用apache common configuration读取配置文件或修改配置文件
http://www.suneca.com/article.asp?id=9
附件说明:
Project-Java-ClassLoad.rar是工程项目文件
apache-commons-lib.jar.rar是apache-commons相关的依赖包
加载配置文件的方式.rar是当前文章的
apache-commons-lib.jpg是它所需要的JAR文件
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com