java动态读取配置文件

import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;

public class ReadConfigation{
        
    /**
    * 属性文件全名
    */
    private static final String PFILE ="Config.properties";
    /**
    * 对应于属性文件的文件对象变量
    */
    private  File m_file = null;
    /**
    * 属性文件的最后修改日期
    */
    private  long m_lastModifiedTime = 0;
    /**
    * 属性文件所对应的属性对象变量
    */
    private  Properties m_props = null;
    /**
    * 本类可能存在的惟一的一个实例
    */
    private static ReadConfigation m_instance =new ReadConfigation();
    /**
    * 私有的构造子,用以保证外界无法直接实例化
    */
    private ReadConfigation()
    {
        m_file = new File(PFILE);
        m_lastModifiedTime = m_file.lastModified();
        if(m_lastModifiedTime == 0){
            System.err.println(PFILE +" file does not exist!");
        }
        m_props = new Properties();
        try
        {
            m_props.load(new FileInputStream(PFILE));
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
    /**
    * 静态工厂方法
    * @return 返还ReadConfigation 类的单一实例
    */
    synchronized public static ReadConfigation getInstance()
    {
        return m_instance;
    }
    /**
    * 读取一特定的属性项
    *
    * @param name 属性项的项名
    * @param defaultVal 属性项的默认值
    * @return 属性项的值(如此项存在), 默认值(如此项不存在)
    */
     public  String getConfigItem(String name,String defaultVal)
    {
        long newTime = m_file.lastModified();
        // 检查属性文件是否被其他程序
        // 如果是,重新读取此文件
    
        if(newTime == 0)
        {
            // 属性文件不存在
            if(m_lastModifiedTime == 0){
                System.err.println(PFILE+ " file does not exist!");
            }else{
                System.err.println(PFILE+ " file was deleted!!");
            }
            return defaultVal;
        }else if(newTime > m_lastModifiedTime){
            // Get rid of the old properties
            m_props.clear();
            try
            {
                m_props.load(new FileInputStream(PFILE));
            }catch(Exception e){
                e.printStackTrace();
            }
        }
            m_lastModifiedTime = newTime;
            String val = m_props.getProperty(name);
            if( val == null )
            {
                return defaultVal;
            }
            else
            {
                return val;
            }
    } 
   public   String getConfigItem(String name){
        return getConfigItem(name,"");
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值