`
zhuyx808
  • 浏览: 120959 次
  • 性别: Icon_minigender_1
  • 来自: 快来看~天上米有灰机
社区版块
存档分类
最新评论

动态读取配置文件

    博客分类:
  • 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,"");
    }
}




不用重启程序,动态读取配置文件
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics