您的位置:首页 > 编程语言 > Java开发

java读取配置文件的几种方法

2012-02-24 17:10 399 查看

java读取配置文件的几种方法

在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来完成,本文根据笔者工作中用到的读取配置文件的方法小小总结一下,主要叙述的是spring读取配置文件的方法。
一.读取xml配置文件

(一)新建一个java bean(HelloBean.java)
java 代码

package chb.demo.vo;

public class HelloBean {

private String helloWorld;

public String getHelloWorld() {

return helloWorld;

}

public void setHelloWorld(String helloWorld) {

this.helloWorld = helloWorld;

}
}

(二)构造一个配置文件(beanConfig.xml)

xml 代码

xml version="1.0" encoding="UTF-8"?>

>
<beans>

<bean id="helloBean" class="chb.demo.vo.HelloBean">

<property name="helloWorld">

<value>Hello!chb!value>

property>

bean>

beans>

(三)读取xml文件

1.利用ClassPathXmlApplicationContext
java 代码

ApplicationContext context = new ClassPathXmlApplicationContext("beanConfig.xml");

HelloBean helloBean = (HelloBean)context.getBean("helloBean");

System.out.println(helloBean.getHelloWorld());

2.利用FileSystemResource读取
java 代码

Resource rs = new FileSystemResource("D:/software/tomcat/webapps/springWebDemo/WEB-INF/classes/beanConfig.xml");

BeanFactory factory = new XmlBeanFactory(rs);

HelloBean helloBean = (HelloBean)factory.getBean("helloBean");\

System.out.println(helloBean.getHelloWorld());

值得注意的是:利用FileSystemResource,则配置文件必须放在project直接目录下,或者写明绝对路径,否则就会抛出找不到文件的异常

二.读取properties配置文件

这里介绍两种技术:利用spring读取properties 文件和利用java.util.Properties读取

(一)利用spring读取properties 文件

我们还利用上面的HelloBean.java文件,构造如下beanConfig.properties文件:
properties 代码

helloBean.class=chb.demo.vo.HelloBean

helloBean.helloWorld=Hello!chb!

属性文件中的"helloBean"名称即是Bean的别名设定,.class用于指定类来源。
然后利用org.springframework.beans.factory.support.PropertiesBeanDefinitionReader来读取属性文件
java 代码

BeanDefinitionRegistry reg = new DefaultListableBeanFactory();

PropertiesBeanDefinitionReader reader = new PropertiesBeanDefinitionReader(reg);

reader.loadBeanDefinitions(new ClassPathResource("beanConfig.properties"));

BeanFactory factory = (BeanFactory)reg;
HelloBean helloBean = (HelloBean)factory.getBean("helloBean");

System.out.println(helloBean.getHelloWorld());

(二)利用java.util.Properties读取属性文件

比如,我们构造一个ipConfig.properties来保存服务器ip地址和端口,如:
properties 代码

ip=192.168.0.1
port=8080

则,我们可以用如下程序来获得服务器配置信息:
java 代码

InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ipConfig.properties");

Properties p = new Properties();

try {

p.load(inputStream);
} catch (IOException e1) {

e1.printStackTrace();
}
System.out.println("ip:"+p.getProperty("ip")+",port:"+p.getProperty("port"));

本文只介绍了一些简单操作,不当之处希望大家多多指教

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.Properties;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

/** *//**

* 读取properties文件

* @author Qutr

*

*/

public class Configuration

{

private static final Log log = LogFactory.getLog(Configuration.class);

private Properties propertie;

private FileInputStream inputFile;

private FileOutputStream outputFile;

private String propsFile = "src/com/util/headerProp.properties";//配置文件路径

/** *//**

* 初始化Configuration类

*/

public Configuration()

{

propertie = new Properties();

}

/** *//**

* 初始化Configuration类

* @param filePath 要读取的配置文件的路径+名称

*/

public Configuration(String filePath)

{

propertie = new Properties();

try {

inputFile = new FileInputStream(filePath);

propertie.load(inputFile);

inputFile.close();

} catch (FileNotFoundException ex) {

System.out.println("读取属性文件--->失败!- 原因:文件路径错误或者文件不存在");

ex.printStackTrace();

} catch (IOException ex) {

System.out.println("装载文件--->失败!");

ex.printStackTrace();

}

}//end ReadConfigInfo()

/** *//**

* 重载函数,得到key的值

* @param key 取得其值的键

* @return key的值

*/

public String getValue(String key)

{

if(propertie.containsKey(key)){

String value = propertie.getProperty(key);//得到某一属性的值

return value;

}

else

return "";

}//end getValue()

/** *//**

* 重载函数,得到key的值

* @param fileName properties文件的路径+文件名

* @param key 取得其值的键

* @return key的值

*/

public String getValue(String fileName, String key)

{

try {

String value = "";

inputFile = new FileInputStream(fileName);

propertie.load(inputFile);

inputFile.close();

if(propertie.containsKey(key)){

value = propertie.getProperty(key);

return value;

}else

return value;

} catch (FileNotFoundException e) {

e.printStackTrace();

return "";

} catch (IOException e) {

e.printStackTrace();

return "";

} catch (Exception ex) {

ex.printStackTrace();

return "";

}

}//end getValue()

/** *//**

* 清除properties文件中所有的key和其值

*/

public void clear()

{

propertie.clear();

}//end clear();

/** *//**

* 改变或添加一个key的值,当key存在于properties文件中时该key的值被value所代替,

* 当key不存在时,该key的值是value

* @param key 要存入的键

* @param value 要存入的值

*/

public void setValue(String key, String value)

{

propertie.setProperty(key, value);

}//end setValue()

/** *//**

* 将更改后的文件数据存入指定的文件中,该文件可以事先不存在。

* @param fileName 文件路径+文件名称

* @param description 对该文件的描述

*/

public void saveFile(String fileName, String description)

{

try {

outputFile = new FileOutputStream(fileName);

propertie.store(outputFile, description);

outputFile.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException ioe){

ioe.printStackTrace();

}

}//end saveFile()

/** *//**

* 通过key得到value

* @param key

*/

public String getProp(String key) {

String retVal = null;

InputStream is = getClass().getResourceAsStream(propsFile);

Properties props = new Properties();

try {

props.load(is);

retVal = props.getProperty(key);

if(retVal == null)retVal="";

} catch (Exception e) {

log.error(e.getMessage().toString());

return null;

}

return retVal;

}

}//end class ReadConfigInfo
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: