java中重新加载指定文件_Java 加载配置文件的方式

一 使用原生方式读取配置文件

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代码

10.10.1.1

jini

jakarta99

admin

manager

user

示例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代码

Temperature Above -10 Celsius

Fuel tank is not empty

4 Liters

42

示例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代码

相关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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值