`

不用重启程序,动态读取配置文件

 
阅读更多
  1. import java.io.File;   
  2. import java.io.FileInputStream;   
  3.   
  4. import java.util.Properties;   
  5.   
  6.   
  7.   
  8.   
  9.   
  10.   
  11.   
  12. public class ReadConfigation{   
  13.            
  14.     /**  
  15.     * 属性文件全名  
  16.     */  
  17.     private static final String PFILE ="Config.properties";   
  18.     /**  
  19.     * 对应于属性文件的文件对象变量  
  20.     */  
  21.     private  File m_file = null;   
  22.     /**  
  23.     * 属性文件的最后修改日期  
  24.     */  
  25.     private  long m_lastModifiedTime = 0;   
  26.     /**  
  27.     * 属性文件所对应的属性对象变量  
  28.     */  
  29.     private  Properties m_props = null;   
  30.     /**  
  31.     * 本类可能存在的惟一的一个实例  
  32.     */  
  33.     private static ReadConfigation m_instance =new ReadConfigation();   
  34.     /**  
  35.     * 私有的构造子,用以保证外界无法直接实例化  
  36.     */  
  37.     private ReadConfigation()   
  38.     {   
  39.         m_file = new File(PFILE);   
  40.         m_lastModifiedTime = m_file.lastModified();   
  41.         if(m_lastModifiedTime == 0){   
  42.             System.err.println(PFILE +" file does not exist!");   
  43.         }   
  44.         m_props = new Properties();   
  45.         try  
  46.         {   
  47.             m_props.load(new FileInputStream(PFILE));   
  48.         }   
  49.         catch(Exception e)   
  50.         {   
  51.             e.printStackTrace();   
  52.         }   
  53.     }   
  54.     /**  
  55.     * 静态工厂方法  
  56.     * @return 返还ReadConfigation 类的单一实例  
  57.     */  
  58.     synchronized public static ReadConfigation getInstance()   
  59.     {   
  60.         return m_instance;   
  61.     }   
  62.     /**  
  63.     * 读取一特定的属性项  
  64.     *  
  65.     * @param name 属性项的项名  
  66.     * @param defaultVal 属性项的默认值  
  67.     * @return 属性项的值(如此项存在), 默认值(如此项不存在)  
  68.     */  
  69.      public  String getConfigItem(String name,String defaultVal)   
  70.     {   
  71.         long newTime = m_file.lastModified();   
  72.         // 检查属性文件是否被其他程序   
  73.         // 如果是,重新读取此文件   
  74.        
  75.         if(newTime == 0)   
  76.         {   
  77.             // 属性文件不存在   
  78.             if(m_lastModifiedTime == 0){   
  79.                 System.err.println(PFILE+ " file does not exist!");   
  80.             }else{   
  81.                 System.err.println(PFILE+ " file was deleted!!");   
  82.             }   
  83.             return defaultVal;   
  84.         }else if(newTime > m_lastModifiedTime){   
  85.             // Get rid of the old properties   
  86.             m_props.clear();   
  87.             try  
  88.             {   
  89.                 m_props.load(new FileInputStream(PFILE));   
  90.             }catch(Exception e){   
  91.                 e.printStackTrace();   
  92.             }   
  93.         }   
  94.             m_lastModifiedTime = newTime;   
  95.             String val = m_props.getProperty(name);   
  96.             if( val == null )   
  97.             {   
  98.                 return defaultVal;   
  99.             }   
  100.             else  
  101.             {   
  102.                 return val;   
  103.             }   
  104.     }    
  105.    public   String getConfigItem(String name){   
  106.         return getConfigItem(name,"");   
  107.     }   
  108. }  
分享到:
评论

相关推荐

    C# winform 读取修改配置文件

    2. **读取配置文件** 在C#中,可以使用`System.Configuration`命名空间的`ConfigurationManager`类来读取`appSettings`的值。以下是如何读取`Setting1`的示例代码: ```csharp using System.Configuration; // ...

    读取配置文件获得数字进行计算

    在IT行业中,读取配置文件并获取数字进行计算是一项基础且重要的任务,广泛应用于各种软件系统和应用程序。配置文件通常包含应用的设置、参数或环境信息,这些信息往往是以键值对的形式存储,便于程序在运行时动态...

    Windows平台,Nginx配置文件修改自动加载重启

    传统的做法是在命令行中运行`nginx -s reload`,通知Nginx进程重新读取配置文件,但这种方法需要手动操作。 为了实现配置文件修改后的自动加载重启,我们可以利用`nginx-conf-watcher`工具。这是一个监听配置文件...

    Spring动态加载配置文件

    在Spring框架中,动态加载配置文件是一项重要的功能,它使得开发者在开发过程中无需重启应用就能实时更新配置,极大地提高了开发效率。热部署方案是这一功能的具体应用,它允许我们在不中断服务的情况下,对应用程序...

    QtApplets-实时读取配置文件

    【标题】"QtApplets-实时读取配置文件"是一个关于使用Qt框架开发应用程序时,如何实时读取和处理配置文件的教程。在Qt中,`QSettings`类是用于存储和读取应用程序设置的关键工具,它支持多种格式的配置文件,如ini...

    IIS 应用程序池、进程监控与重启程序C#源码

    实时监控IIS中的程序池和网站(config.xml中配置的),如果网站或程序池因为cpu利用率较高而死掉,则重启网站或程序池,并在控制台中打印相关信息。所有的监控信息和重启信息均打印到当前目录下的...

    修改配置文件 重启服务

    在C++开发的项目中,配置文件可能是文本文件(如ini、xml或json格式),开发者可以读取这些文件来动态改变程序的运行状态。例如,数据库连接字符串、服务器端口、日志级别等都可能存储在配置文件中。 **修改配置...

    设置配置文件信息

    要读取配置文件,首先需要使用适当的库或API。例如,在Python中,可以使用`configparser`库处理.ini文件,`xml.etree.ElementTree`库处理.xml文件,`json`模块处理.json文件,而对于.yaml文件,可以使用`pyyaml`库...

    fst 配置文件读取

    7. **动态加载与热更新**:某些系统支持配置文件的动态加载,这意味着在程序运行时可以修改配置并立即生效,而无需重启服务。热更新功能对于调试和快速响应需求变化非常有用。 8. **自动化配置**:在大规模部署场景...

    IIS7无法读取配置文件解决办法

    如果web.config文件的大小超过了这个限制,IIS将无法读取配置文件,从而导致应用程序无法正常运行。 解决此问题的具体步骤如下: 1. 检查web.config文件的大小。通常,web.config文件位于应用程序的根目录下,你...

    Configuration对properties、xml配置文件的【增删改查】及动态加载

    Apache Commons Configuration支持动态加载配置文件,这意味着当配置文件发生改变时,程序无需重启就能感知到这些变化。这主要通过监听配置文件的变化来实现。例如,可以使用`FileChangedReloadingStrategy`类监听...

    TaggedModularConfigurationJava配置库读取并将配置文件映射到POJO

    4. **配置解析**:使用TMC库提供的API读取配置文件,并将其内容映射到之前定义的POJO类。TMC库会自动处理类型转换,例如将字符串转换为整数或日期等。 5. **加载和使用配置**:在应用程序启动时,通过TMC库加载配置...

    5基础 2:配置文件读取(1).md

    它还涉及到对配置的持续管理,比如在应用运行时,如果配置文件发生了变化,如何动态地重新加载配置,而不需要重启整个服务。Viper通过`fsnotify`来实现对配置文件的监控,并且当配置文件发生变化时,能够及时地热...

    c#操作配置文件!!!!

    2. **读取配置文件**:要读取配置文件中的值,可以使用ConfigurationManager类。例如,获取`appSettings`节中的值: ```csharp string settingValue = ConfigurationManager.AppSettings["SettingName"]; ``` ...

    自动重启程序

    3. **读取监控程序配置项**:这意味着该程序具备解析配置文件的能力,以获取需要监控的服务列表、重启策略、错误阈值等参数。配置文件通常采用JSON、XML或ini格式,允许用户根据需求调整监控行为。 4. **服务器重启...

    程序的配置文件_底层_源码

    源码层面,配置文件的读取通常在程序初始化阶段进行,通过专门的配置模块加载并解析。开发者需要关注配置文件加载的错误处理,确保即使配置文件出现问题,程序也能以某种降级模式正常运行。此外,源码中应有良好的...

    java配置文件修改读取工具类,包括yml和properties类型文件

    在Java开发中,配置文件是不可或缺的一部分,它们用于存储应用程序的设置、连接信息和其他环境特定的参数。YAML(YAML Ain't Markup Language)和Properties是两种常见的配置文件格式。本篇文章将深入探讨如何使用...

    IDEA WEB项目启动不加载application.properties配置文件.docx

    "IDEA WEB项目启动不加载application.properties配置文件" 在本篇文章中,我们将讨论IDEA WEB项目启动不加载application.properties配置文件的问题。这个问题可能是由于项目中使用的SpringBoot版本不一致引起的。...

    rabbitmq根据配置文件动态生成队列

    动态生成队列是通过读取配置文件实现的,这通常涉及到程序的启动阶段或者在运行时根据需求动态更新队列设置。配置文件可以是JSON、XML或YAML格式,包含队列的名称、属性(如是否持久化、是否独占等)以及交换器的...

Global site tag (gtag.js) - Google Analytics