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

<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

时间: 2024-08-06 19:34:14

Java 加载配置文件的方式的相关文章

java加载配置文件

转载自http://blog.163.com/wb_zhaoyuwei/blog/static/183075439201261764454791/ 当我们自己的程序需要处理配置文件时(比如xml文件或properties文件),通常会遇到两个问题: (1)我的配置文件应该放在哪里? (2)怎么我的配置文件找不到了? 对于第一个问题,答案是:请将你的资源文件放在classpath里,如果资源文件在jar中,请将该jar文件也加到classpath里面. 对于第二个问题,就得看你是使用的是哪个类(C

Spring 加载配置文件的方式

我们常用的加载context文件的方法有如下三个: 1.FileSystemXmlApplicationContext 这个方法是从文件绝对路径加载配置文件,例如: ApplicationContext ctx = new FileSystemXmlApplicationContext( "G:/Test/applicationcontext.xml "); 如果在参数中写的不是绝对路径,那么方法调用的时候也会默认用绝对路径来找,我测试的时候发现默认的绝对路径是eclipse所在的路径

SpringMvc的创建流程以及2种加载配置文件的方式

1.首先创建个web项目,第一步导入相应的jar包,并且buildtoPath 2.用elipse或myeclipse点击进入web.xml中 按住 Alt+ / 有个提示 找到前面带 #DispatcherServlet 并按回车键,自动生成. 按我这个方式对比修改一下,首先解释一下, <load-on-startup>1</load-on-startup> load-on-startup标记容器是否在启动的时候实例化并调用其init()方法的优先级. 它的值表示servlet应

Spring笔记02(3种加载配置文件的方式)

1.不使用Spring的实例: 01.Animal接口对应的代码: package cn.pb.dao; /** * 动物接口 */ public interface Animal { //吃饭 String eat(); //睡觉 void sleep(); } 02.Animal接口的实现类Dog对应的代码: package cn.pb.dao.impl; /** * animal的实现类 */ import cn.pb.dao.Animal; public class Dog implem

java加载properties文件的六中基本方式实现

java加载properties文件的方式主要分为两大类:一种是通过import java.util.Properties类中的load(InputStream in)方法加载: 另一种是通过import java.util.ResourceBundle类的getBundle(String baseName)方法加载. 注意:一定要区分路径格式 实现代码如下: 1 package com.util; 2 3 import java.io.FileInputStream; 4 import jav

避免缓存,Java动态加载配置文件

Java动态加载配置文件 关键:每次读取都要重新生成流 今天无意间在项目的代码中看到如下这样一段简单加载配置文件的代码: Properties prop = new Properties(); InputStream in = PropertiesTest.class.getClassLoader().getResourceAsStream("/config.properties"); prop.load(in); 其实代码本身是没有什么问题的 问题就是用这种方式来读取配置文件,会存在

org.apache.hadoop.yarn.conf.ConfigurationProviderFactory分析加载配置文件两种方式

ConfigurationProviderFactory结构如下: /** * Creates an instance of {@link ConfigurationProvider} using given * configuration. * @param bootstrapConf * @return configurationProvider */ @SuppressWarnings("unchecked") public static ConfigurationProvide

Spring之IOC容器加载初始化的方式

引言 我们知道IOC容器时Spring的核心,可是如果我们要依赖IOC容器对我们的Bean进行管理,那么我们就需要告诉IOC容易他需要管理哪些Bean而且这些Bean有什么要求,这些工作就是通过通过配置文件告诉Spring 的IOC容器.在我们的完成这些配置文件以后,如果IOC容易要实现对这些Bean的管理,除了资源的定位还有一个很重要的一步就是完成IOC加载初始化,也就是配置文件的载入过程.完成IOC容器加载初始化的方式只要有三种,第一种就是通过File文件加载,第二种是通过Classpath

java加载property文件配置

1 properties简介: properties是一种文本文件,内容格式为:     key = value     #单行注释 适合作为简单配置文件使用,通常作为参数配置.国际化资源文件使用. 对于复杂的配置,就需要使用XML.YML.JSON等了 2 java加载Properties: java加载properties主要通过2个util包下的工具类: Properties类. ResourceBundle类 2.1 通过Properties类加载: Properties类通过load(