`

动态读取配置文件

阅读更多
import java.io.File;
import java.io.FileInputStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Properties;

/**
 * 动态读取配置文件类
 * 
 * @author dick_wyq
 * @version 1.0
 * 
 */
public class ConfigurationRead {

	/**
	 * 属性文件全名
	 */
	private static final String PFILE = "config.properties";

	/**
	 * 配置文件路径
	 */
	private URI uri = null;

	/**
	 * 属性文件所对应的属性对象变量
	 */
	private long m_lastModifiedTime = 0;

	/**
	 * 对应于属性文件的文件对象变量
	 */
	private File m_file = null;

	/**
	 * 属性文件所对应的属性对象变量
	 */
	private Properties m_props = null;

	/**
	 * 唯一实例
	 */
	private static ConfigurationRead m_instance = new ConfigurationRead();

	/**
	 * 私有构造函数
	 * 
	 * @throws URISyntaxException
	 */
	private ConfigurationRead() {
		try {
			m_lastModifiedTime = getFile().lastModified();
			if (m_lastModifiedTime == 0) {
				System.err.println(PFILE + "file does not exist!");
			}
			m_props = new Properties();
			m_props.load(new FileInputStream(getFile()));

		} catch (URISyntaxException e) {
			System.err.println("文件路径不正确");
			e.printStackTrace();
		} catch (Exception e) {
			System.err.println("文件读取异常");
			e.printStackTrace();
		}
	}

	/**
	 * 查找ClassPath路径获取文件
	 * 
	 * @return File对象
	 * @throws URISyntaxException
	 */

	private File getFile() throws URISyntaxException {
		URI fileUri = this.getClass().getClassLoader().getResource(PFILE)
				.toURI();
		m_file = new File(fileUri);
		return m_file;
	}

	/**
	 * 静态工厂方法
	 * 
	 * @return 返回ConfigurationRead的单一实例
	 */
	public synchronized static ConfigurationRead getInstance() {
		return m_instance;
	}

	/**
	 * 读取一特定的属性项
	 */
	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) {
			m_props.clear();
			try {
				m_props.load(new FileInputStream(getFile()));
			} catch (Exception e) {
				System.err.println("文件重新读取异常");
				e.printStackTrace();
			}
		}
		m_lastModifiedTime = newTime;
		String val = m_props.getProperty(name);
		if (val == null) {
			return defaultVal;
		} else {
			return val;
		}
	}

	/**
	 * 读取一特定的属性项
	 * 
	 * @param name
	 *            属性项的项名
	 * @return 属性项的值(如此项存在), 空(如此项不存在)
	 */
	public String getConfigItem(String name) {
		return getConfigItem(name, "");
	}

}
分享到:
评论

相关推荐

    保存INI配置文件和读取配置文件

    INI 配置文件的保存和读取 INI 配置文件是一种常见的文件格式,用于存储程序的配置信息。它是一种简单的持久化机制,允许程序在启动时初始化配置信息。INI 文件由多个节(Section)组成,每个节中可以有多个键名...

    基于Qt的读取配置文件

    [MoonlightService这个string串就是读取配置文件的路径,可以写成宏函数] 3.在判断完m_iniFile是否为空, 接下来就是可以使用了 举例: if (m_iniFile != NULL){ strRet = m_iniFile->GetValue("moonlightService...

    封装读取配置文件

    除了默认读取配置文件外,还提供了根据特定路径读取配置文件的功能,通过`getPropertyValue`方法,开发者可以根据需要指定不同的配置文件路径,增强了框架的灵活性和适应性。 ### 结论 封装读取配置文件的方法,...

    java读取配置文件

    在Java编程中,读取配置文件是常见的任务,特别是在开发需要灵活配置的系统时。配置文件通常用于存储应用程序的设置,如数据库连接信息、服务器端口、第三方服务的API密钥等,这些信息可能需要根据不同的环境或需求...

    Linux shell 脚本读取配置文件

    Linux 系统 shell脚本读取配置文件

    C# winform 读取修改配置文件

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

    C#读取配置文件详解教程

    C# 读取配置文件详解教程 配置文件是 C# 中的一个重要概念,它允许开发人员存储和读取应用程序的配置信息。配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的。开发人员可以使用配置文件来更改设置,而不必...

    VC读取动态配置文件

    1. **读取配置文件**:`GetPrivateProfileString`用于读取配置文件中的键值。函数原型如下: ```cpp DWORD GetPrivateProfileString( LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpDefault, LPTSTR ...

    SpringBoot-2.7.6读取配置文件的方式

    本篇文章将详细介绍Spring Boot如何读取配置文件,以及提供一些调试示例代码,帮助你更好地理解和运用。 ### 1. 配置文件位置与优先级 Spring Boot支持多种类型的配置文件,包括`application.properties`和`...

    QtApplets-实时读取配置文件

    通过学习这个教程,开发者将能够更好地理解和利用Qt的`QSettings`类,提高其应用程序对用户个性化设置的支持,以及对配置文件动态变化的响应能力。对于开发跨平台的应用程序来说,这是非常重要的,因为它允许用户...

    java 读取配置文件

    在Java编程中,读取配置文件是常见的任务,特别是在构建可扩展和可维护的应用程序时。配置文件通常用于存储应用程序的设置、连接信息或其他敏感数据,这样可以将这些信息与核心代码分离,便于管理和更新。本篇文章将...

    c++读取配置文件

    在C++编程中,读取配置文件是一项常见的任务,它允许程序在运行时根据外部文件中的设置进行调整,而不是硬编码这些参数。本教程将详细讲解如何使用C++读取配置文件,特别是针对TXT格式的文件,因为它们简单且易于...

    VC++ 6.0 mfc 读取配置文件实例

    VC++ 6.0 mfc 读取配置文件实例 VC++ 6.0 mfc 读取配置文件实例 VC++ 6.0 mfc 读取配置文件实例 VC++ 6.0 mfc 读取配置文件实例 VC++ 6.0 mfc 读取配置文件实例 VC++ 6.0 mfc 读取配置文件实例 VC++ 6.0 mfc 读取...

    LabVIEW 写入与读取配置文件

    2. 数据类型转换:读取配置文件时,可能需要将字符串转换为适当的LabVIEW数据类型,如数值、布尔值或日期时间。 3. 文件路径:确保指定的文件路径有效,尤其是在跨平台应用中,考虑到不同操作系统下的路径表示可能...

    读取配置文件代码

    在Java编程中,读取配置文件是常见的任务,它允许我们分离应用程序的配置信息,使得配置可以在不修改源代码的情况下更改。本示例将详细解释如何使用Java来读取configuration配置文件中的内容,以实现更灵活和可维护...

    spring mvc 读取配置文件

    这篇博客“spring mvc 读取配置文件”将深入探讨如何在Spring MVC中读取和使用配置文件,以及相关工具的应用。 首先,Spring MVC中的配置文件通常是指XML配置文件,如`applicationContext.xml`或`servlet-context....

    spring读取配置文件

    这种方式更适用于配置文件位于项目外部或者需要动态更改配置文件的情况。例如,如果配置文件位于`/path/to/config/applicationContext.xml`,则可以这样创建上下文: ```java ApplicationContext context = new ...

    用enum实现单例模式的方法来读取配置文件

    `Properties`类用于处理键值对,它是Java中读取配置文件的标准方式。 要获取配置文件中的数据,我们可以调用`Singleton.INSTANCE.getProperties()`。例如,如果配置文件中有`database.url`属性,我们可以通过以下...

    读取配置文件的简单方式

    在IT开发过程中,读取配置文件是一个常见的任务,它允许我们动态地管理应用程序的设置,如数据库连接字符串、API密钥或系统参数。本篇文章将深入探讨如何以简单的方式读取本地配置文件,并结合CListBox控件实现中...

Global site tag (gtag.js) - Google Analytics