动态读取properties文件

package com.resoft.util.common;
import java.io.File;
import java.io.FileInputStream;
import java.net.URL;
import java.util.Properties;

import org.apache.log4j.helpers.Loader;
/**
* 不重启动服务器动态加载properties文件改动
* @author Administrator
*
*/
public class ConfigManager {
        private static ConfigManager m_instance;
        private static String PFILE;

        synchronized public static ConfigManager getInstance() {
          if (m_instance == null) {
           if (PFILE == null) {
            URL url = Loader.getResource("kindNameChange.properties");
            PFILE = url.getPath();
//            PFILE = StringUtil.replaceAll(PFILE, "%20", " ");
           }
           m_instance = new ConfigManager();
          }
          return m_instance;
        }

        private File m_file = null;
        private long m_lastModifiedTime = 0;
        private Properties m_props = null;

        private ConfigManager() {
          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();
          }
        }

        final public Object getConfigItem(String name, Object 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) {
           m_props.clear();
           try {
            m_props.load(new FileInputStream(PFILE));
           } catch (Exception e) {
            e.printStackTrace();
           }
          }
          m_lastModifiedTime = newTime;

          Object val = m_props.getProperty(name);
          if (val == null) {
           return defaultVal;
          } else {
           return val;
          }
        }

        }

posted @ 2014-05-22 17:36  寻何  阅读(418)  评论(0编辑  收藏  举报