Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6275566
  • 博文数量: 2759
  • 博客积分: 1021
  • 博客等级: 中士
  • 技术积分: 4091
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-11 14:14
文章分类

全部博文(2759)

文章存档

2019年(1)

2017年(84)

2016年(196)

2015年(204)

2014年(636)

2013年(1176)

2012年(463)

分类: Java

2014-06-26 00:42:28

原文地址:Java之配置文件 作者:scq2099yt

一、Properties文件
        Java中配置文件最简单、依赖最少的莫过于Properties文件。通过java.util包的Properties类实现配置读取,配置文件以key=value形式存储配置,读取时key为String类型,返回的value也是String类型。下面举例说明如下使用Properties类读取配置文件。
1、配置文件
        #vi config.properties
        Hello=World
2、实例代码
        #vi Conf4Prop.java
        import java.io.IOException;    
        import java.util.Properties;

        public class Conf4Prop {
            private static Properties p = null;
            private static Conf4Prop conf4prop = null;

            public static Conf4Prop getInstance()
            {
                if (null == conf4prop)
                {
                    conf4prop = new Conf4Prop();
                }
                return conf4prop;
            }

            public boolean LoadConf(String strLogConfPath)
            {
                try {
                    if (null == p) {
                        p = new Properties();
                    }
                    p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(strLogConfPath));
                } catch (IOException e) {
                    e.printStackTrace();
                    return false;
                }
                return true;
            }

            public String GetConf(String strKey)
            {
                return p.getProperty(strKey);
            }

            public static void main(String[] args) {
                Conf4Prop.getInstance().LoadConf(args[0]);
                String key = "Hello";
                String value = Conf4Prop.getInstance().GetConf(key);
                System.out.println("Hello="+value);
            }
        }
3、输出结果
        #javac -d ./ Conf4Prop.java
        #java Conf4Prop config.properties
        Hello=World
              
二、XML文件
        如果配置非简单的key=value能描述,而需要复杂的层次结构才能描述的话,XML文件将是您的首先。
1、配置文件
        #vi config.xml
        
        
            http_server
            

                192.168.1.1
                8080
            Address>
        
2、实例代码
        #vi Conf4Xml.java
        import org.apache.commons.configuration.ConfigurationException;
        import org.apache.commons.configuration.XMLConfiguration;

        public class XmlConfigDemo {
            public static void main(String[] args) {
                try {
                    XMLConfiguration config = new XMLConfiguration("config.xml");
                    System.out.println(config.getList("name"));
                    System.out.println(config.getInt("info.age"));
                } catch (ConfigurationException e) {
                    e.printStackTrace();
                }
            }
        }

三、混合文件
        Java中可以混合Properties和XML配置文件来满足更加复杂的应用配置需求。比如:假设有3个配置文件,分别是global.properties、local.properties、user.properties,其中,user优先于local,local优先于global,那么用以下这3个Properties逻辑配置文件和1个XML引用配置文件就可实现复合配置。
1、引用配置文件
        cofigs.xml内容如下:
        
        
            
            
            
        

2、逻辑配置文件
        (1)global.properties内容如下:
        name=Default User
        age=0
        speed=10
        (2)local.properties内容如下:
        name=kiyho
        age=20
        (3)user.properties内容如下:
        age=100
3、实例代码
        import org.apache.commons.configuration.Configuration;
        import org.apache.commons.configuration.ConfigurationException;
        import org.apache.commons.configuration.ConfigurationFactory;

        public class ConfigsDemo {
            public static void main(String[] args) {
                ConfigurationFactory factory = new ConfigurationFactory();
                factory.setConfigurationFileName("configs.xml");

                try {
                    Configuration config = factory.getConfiguration();
                    System.out.println("name: " + config.getString("name"));
                    System.out.println("age: " + config.getInt("age"));
                    System.out.println("speed: " + config.getFloat("speed"));
                } catch (ConfigurationException e) {
                    e.printStackTrace();
                }
            }
        }


阅读(1080) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~