java读取配置文件一些方法总结

Jakarta Commons的configuration包读取配置文件

配置文件一般常见的有两种:键值对格式,或XML配置文件,读取这类配置文件可以用Commons Configuration包。

键值对格式也就是常见的.properties文件。通过PropertiesConfiguration读取,如下:

 代码如下 复制代码

package com.guoweiwei.test.configuration;
import java.util.List;
import org.apache.commons.configuration.Configuration;

import org.apache.commons.configuration.ConfigurationException;

import org.apache.commons.configuration.PropertiesConfiguration;

public class PropertiesReadExample {

    /**

     * @param args

     * @throws ConfigurationException

     */

    public static void main(String[] args) throws ConfigurationException {

       Configuration config = new PropertiesConfiguration(“com/guoweiwei/test/configuration/test.properties”);

       float speed = config.getFloat(“speed”);

       List names = config.getList(“names”);

       boolean correct = config.getBoolean(“correct”);

       System.out.println(“speed:” + speed);

       System.out.println(“names:” + names.size());

       System.out.println(“correct:” + correct);

    }

}

当然对XML文件的读取和解析也是如此简单:

 代码如下 复制代码

package com.guoweiwei.test.configuration;import java.util.List;

import org.apache.commons.configuration.Configuration;

import org.apache.commons.configuration.ConfigurationException;

import org.apache.commons.configuration.XMLConfiguration;

public class XMLReadExample {

    private static final String RESOURCE_FILE = “com/guoweiwei/test/configuration/test.xml”;

    /**

     * @param args

     * @throws ConfigurationException

     */

    public static void main(String[] args) throws ConfigurationException {

       Configuration config = new XMLConfiguration(RESOURCE_FILE);

       List startCriteria = config.getList(“start-criteria.criteria”);

       String firstCriteria = config.getString(“start-criteria.criteria(0)”);

       String firstCriteriaType = config.getString(“start-criteria.criteria(0)[@type]“);

       int horsepower = config.getInt(“horsepower”);

       System.out.println(“startCriteria:” + startCriteria.size());

       System.out.println(“firstCriteria:” + firstCriteria);

       System.out.println(“firstCriteriaType:” + firstCriteriaType);

       System.out.println(“horsepower:” + horsepower);

    }

}

从上面的代码可以看出,XMLConfiguration的getXXX()方法还支持XPath解析XML文件。

此外,可以综合使用XML和属性文件读取配置文件,比如一种常见的场景:

应用程序的配置有多个不同的地方。首先是一个全局配置;然后某个地方可能需要局部配置,当两者重复时以局部配置为准,然后还有一个用户自定义的配置文件,用户自定义的配置文件优先级又高于局部配置和全局配置。这个时候就可以考虑用一个ConfigurationFactory来管理了,将三个不同的配置文件分别定义为global.properties、local.properties、user.properties,然后通过一个configuration.xml的文件来管理三者之间的优先级关系,如下所示:

属性配置文件之一global.properties

threads.max=50threas.min=2

timout=15.52

interactive=true

color=red

speed=50

name=Default User
 

属性配置文件之二local.properties

threads.max=30speed=55

属性配置文件之三user.properties

threads.min=1color=black

speed=5000

name=Sean
 

管理这三个属性配置文件的配置文件configuration.xml

 代码如下 复制代码

<?xml version=“1.0″ encoding=“UTF-8″?><configuration>

    <properties fileName=“user.properties”/>

    <properties fileName=“local.properties”/>

    <properties fileName=“global.properties”/>

</configuration>
 

然后,应用程序中可以这样使用:

 代码如下 复制代码

package com.guoweiwei.test.configuration;import java.net.MalformedURLException;

import java.net.URL;

import org.apache.commons.configuration.Configuration;

import org.apache.commons.configuration.ConfigurationException;

import org.apache.commons.configuration.ConfigurationFactory;

public class ComplexConfigExample {

    private static final String RESOURCE_FILE = “com/guoweiwei/test/configuration/complex/configuration.xml”;

    /**

     * @param args

     * @throws ConfigurationException

     * @throws MalformedURLException

     */

    public static void main(String[] args) throws ConfigurationException, MalformedURLException {

       ComplexConfigExample c = new ComplexConfigExample();

       c.ReadComplexConfiguration();

    }

    private void ReadComplexConfiguration() throws ConfigurationException{

       ConfigurationFactory factory = new ConfigurationFactory();

       //URL url = this.getClass().getResource(RESOURCE_FILE);

       URL url = this.getClass().getResource(“complex/configuration.xml”);

       factory.setConfigurationURL(url);

       Configuration config = factory.getConfiguration();

       System.out.println(“Timeout:”+config.getFloat(“timout”));

       System.out.println(“Max Thread:”+config.getInt(“threads.max”));

       System.out.println(“Name:”+config.getString(“name”));

       System.out.println(“Speed:”+config.getInt(“speed”));

    }

}

最后的输出结果如下:

Timeout:15.52 【来自于global.properties】Max Thread:30 【来自于local.properties】

Name:Sean 【来自于user.properties】

Speed:5000 【来自于user.properties】
 

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")); 

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

时间: 2024-12-10 17:06:38

java读取配置文件一些方法总结的相关文章

Java读取配置文件的方法

 在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来完成,本文根据笔者工作中用到的读取配置文件的方法小小总结一下,主要叙述的是spring读取配置文件的方法.     一.读取xml配置文件     (一)新建一个java bean package chb.demo.vo; public class HelloBean {  private String helloWorld;  public String getHelloWorld() {   return hello

js读取配置文件的方法

 这篇文章主要介绍了js读取配置文件的方法,需要的朋友可以参考下 自己写的用js读取配置文件的程序  D:Useful StuffJavascriptmytest.txt  文件内容如下     代码如下: [plugin_page_search]  wholeword=0  matchcase=1  hightlight=1  total=1    [data]  up=85  down=5    代码如下: var fso = new ActiveXObject("Scripting.Fil

Java读取邮件的方法_java

本文实例讲述了Java读取邮件的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: public void receive() throws Exception { Log.e(tag, "receive()"); // sharedpreference读取数据,用split()方法,分开字符串. SharedPreferences pre = getSharedPreferences("SAVE_INFORMATION",MODE_WORLD_R

Java使用ByteArrayOutputStream 和 ByteArrayInputStream 避免重复读取配置文件的方法_java

ByteArrayOutputStream类是在创建它的实例时,程序内部创建一个byte型别数组的缓冲区,然后利用ByteArrayOutputStream和ByteArrayInputStream的实例向数组中写入或读出byte型数据.在网络传输中我们往往要传输很多变量,我们可以利用ByteArrayOutputStream把所有的变量收集到一起,然后一次性把数据发送出去.具体用法如下: ByteArrayOutputStream:    可以捕获内存缓冲区的数据,转换成字节数组. ByteA

java读取配置文件properties的方法

   示例: 属性文件:beans.properties articleDao=cn.com.leadfar.cms.backend.dao.impl.ArticleDaoImpl channelDao=cn.com.leadfar.cms.backend.dao.impl.ChannelDaoImpl 使用此属性时类的配置如下: PropertiesBeanFactory.java package cn.com.leadfar.cms.utils; import java.io.IOExcep

asp.net C#读取配置文件实现方法

更新应用程序的配置文件之后需刷新 ConfigurationManager.RefreshSection("appSettings");// 刷新命名节,在下次检索它时将从磁盘重新读取它. ConfigurationSettings也存在这个问题, 但是我还不知道怎么刷新节点, 呵呵. 旧方法: 各位看官最好使用下面"新方法" 配置文件:  代码如下 复制代码 <configuration> <appSettings> <add key

Java 读取大文件方法

需求:实际开发中读取文本文件的需求还是很多,如读取两个系统之间FTP发送文件,读取后保存到数据库中或日志文件的数据库中保存等. 为了测试首先利用数据库SQL生成大数据文件. 规则是 编号|姓名|手机号,如 10|张10|13900000010 利用下面语句可以生成10,000,000条数据. SELECT LEVEL||'|'||'张'||LEVEL||'|'||(13900000000+LEVEL)  FROM DUAL CONNECT BY LEVEL < 1000000; 实现如下: pa

java读取properties文件的方法_java

本文实例讲述了java读取properties文件的方法.分享给大家供大家参考.具体实现方法如下: package com.test.demo; import java.util.Properties; import java.io.InputStream; import java.io.IOException; /** * 读取Properties文件的例子 * File: TestProperties.java */ public final class TestProperties { p

详解Java程序读取properties配置文件的方法_java

在我们平时写程序的时候,有些参数是经常改变的,而这种改变不是我们预知的.比如说我们开发了一个操作数据库的模块,在开发的时候我们连接本地的数据库那么IP ,数据库名称,表名称,数据库主机等信息是我们本地的,要使得这个操作数据的模块具有通用性,那么以上信息就不能写死在程序里.通常我们的做法是用配置文件来解决. 各种语言都有自己所支持的配置文件类型.比如Python ,他支持.ini 文件.因为他内部有一个ConfigParser 类来支持.ini 文件的读写,根据该类提供的方法程序员可以自由的来操作