`
sundful
  • 浏览: 1253789 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于系统读取properties配置文件的路径问题,包括打成jar包的运行文件

    博客分类:
  • Java
 
阅读更多

在当前的一个项目中,遇到以下业务需要:

1.开发环境是在myeclipse里运行的时候,启动服务后,有一个加载配置文件属性信息的Global.java。用于得到配置文件里的配置信息;

2.发布系统的时候,需要把系统打成jar执行,这时候之前的加载配置文件的方法就不起作用了得不到配置文件的路径;

3.因在系统刚启动时,需要启动加载一个Listener,在Listener里又加载了一个配置文件。

4.以上加载配置文件,都是只能加载一次配置文件,当配置文件的内容修改后,只能再次重启服务后才能读取到变动的配置内容,系统中有些配置参数是需要时时获取配置文件里的最新参数信息。

如何在以上场景加载配置文件呢,通过来回的找资料、调试,终于搞定。以下是具体代码:

package test;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
public class Test {
	public static void main(String[] args) throws Exception{
		System.out.println(load1());//通过ClassLoader方式加载配置文件
		System.out.println(load2());//
		
	}
	/**
	 * 通过ClassLoader方式加载配置文件
	 * 这种加载方式:
	 * 			1.可在myeclipse里运行时得到配置文件路径;
	 * 			2.亦可在把项目打成jar包运行时,得到配置文件路径;
	 */
	public static String load1()throws Exception{
		Properties p = new Properties();
		InputStream in = Test.class.getClassLoader().getResourceAsStream("config/config.properties");
		p.load(in);
		return  p.getProperty("user_name").toString().trim(); 
	}
	
	/**
	 * 自动加载配置文件机制,可在修改配置文件后,不用重启服务也能得到配置文件的新内容
	 */
	public static String load2()throws Exception{
		String file_name = Test.class.getClassLoader().getResource("config/config.properties").getFile();
		Properties p = new Properties();
		PropertiesConfiguration propconfig =null;//创建自动加载的机制
		propconfig = new PropertiesConfiguration();
		propconfig.setEncoding("UTF-8");//设置编码
		propconfig.setReloadingStrategy(new FileChangedReloadingStrategy());//设置自动冲加载机制
		p.load(new FileInputStream(file_name));
		return p.getProperty("user_name").toString().trim();//每次调用这个方法都会从配置文件里取到最新的参数
	}
}

 

分享到:
评论

相关推荐

    Python实现读取Properties配置文件的方法

    本篇文章将详细探讨如何通过Python来读取并解析`.properties`配置文件。 首先,了解`.properties`文件的格式。这种文件通常用于存储配置信息,其中键值对以等号`=`分隔,每一行代表一个键值对,注释以`#`或`!`开始...

    读取properties文件返回map

    - `load(InputStream input)`:接受一个`InputStream`,通常是从文件系统、类路径或网络流中获取。 - `load(Reader reader)`:接受一个`Reader`,适用于处理Unicode编码的文件。 示例代码: ```java ...

    Eclipse打包成JAR包读取外部JAR包和外部配置文件(源码)

    JAR文件是Java类文件和相关资源的容器,它们被组织成目录结构,类似于Unix或Windows的文件系统。每个JAR文件包含一个META-INF目录,其中的MANIFEST.MF文件记录了JAR的基本信息,如主类(Main-Class)等。 1. **打包...

    java读取.properties配置文件的几种方法

    在Java编程中,读取`.properties`配置文件是常见的任务,这些文件通常用于存储应用程序的配置参数、系统设置等信息。下面将详细介绍几种在Java中读取`.properties`配置文件的方法。 1. 使用`java.util.Properties`...

    java读取配置文件

    如果你的项目使用了Spring框架,可以利用Spring的`Resource`接口来读取配置文件,它支持从类路径、文件系统、URL等多种来源加载资源: ```java Resource resource = new ClassPathResource("config.properties");...

    读取properties配置文件

    这些文件通常以`.properties`为扩展名,其中包含了键值对,用于保存应用程序的配置参数,如数据库连接字符串、系统路径、应用版本等。读取这些配置文件是Java开发中的常见任务,有助于将配置与代码分离,方便管理和...

    java读写properties文件,解决系统找不到指定路径,解决写入后读取正常,但文件数据未更新问题

    然而,有时可能会遇到一些常见问题,比如系统找不到指定的Properties文件路径、写入后读取显示正常但实际文件数据未更新等。下面我们将详细讨论这些问题及其解决方案。 首先,让我们看看如何在Java中正确地读取...

    ubuntu系统读取ini配置文件

    在Ubuntu系统中,开发C++程序时经常需要处理配置文件,而INI文件因其简洁明了的格式,常被用于存储应用程序的配置参数。本模块提供了一种在Ubuntu环境下使用C++读取INI配置文件的方法,使得开发者能方便地获取和修改...

    解决SpringBoot打成jar运行后无法读取resources里的文件问题

    因此,在运行时,我们无法直接通过文件系统路径去访问这些资源文件。我们需要使用类加载器(ClassLoader)来访问它们。 在开发环境中,可以通过`ResourceUtils.getFile(ResourceUtils.CLASSPATH_URL_PREFIX + ...

    properties文件的读取

    `properties`文件的读取是Java开发中的常见操作,尤其在处理配置、国际化(i18n)或持久化数据时。 在Java中,我们使用`java.util.Properties`类来处理`properties`文件。以下是一个简单的`properties`文件读取的...

    读取properties文件内容

    ConfigFile configfile = ConfigFile.getInstance("ipConfig123.properties"); String ip = configfile.getkeyvalue("ip"); 可以取出ipConfig123.properties 文件中IP的内容

    利用Java的Properties 类读取配置文件信息

    在Java编程中,读取配置文件是常见的任务,主要用于存储应用程序的设置或环境变量,以方便管理和维护。Java提供了一个内置的`java.util.Properties`类,用于处理`.properties`文件,这种格式通常用来存储键值对,即...

    java 读取properties文件代码

    总结,Java中读取Properties文件是通过`java.util.Properties`类来实现的,涉及的关键步骤包括加载文件、获取键值对以及处理可能的异常。这种机制在许多场景下都非常实用,如数据库连接配置、应用设置等。理解并熟练...

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

    常见的系统配置文件包括 C:/boot.ini、C:/WINDOWS/win.ini、C:/WINDOWS/system.ini、C:/WINDOWS/desktop.ini 和 C:/WINDOWS/Resources/Themes/Windows Classic.theme。 在 VC 中操作 INI 文件的 API 有两种: 1. ...

    JAR文件读取工具

    JAR文件本质上是一个ZIP格式的压缩文件,包含了一个或多个类文件、资源文件、配置文件等。每个JAR文件有一个`META-INF`目录,其中包含`MANIFEST.MF`文件,这个文件存储了关于JAR的元信息,如主类、版本号等。此外,...

    java读取properties文件(配置文件)

    java读取properties文件的工具类,传入配置文件名字和其中的key就可以读取

    封装读取配置文件

    3. **提升性能**:通过缓存配置文件的读取结果,减少文件系统访问,提高程序响应速度。 ### 实现细节解析 #### 1. 配置文件路径定义 在`MainLocation`类中,首先定义了一个默认的配置文件路径`DEFAULT_PROPERTIES...

    读取分析Excel所有jar包和java示例文件

    本资源包聚焦于这个主题,包含了一系列jar包以及两个.java示例文件,帮助我们深入理解如何在Java环境中读取和解析Excel内容。 首先,让我们了解一下核心的jar包。这些jar包通常包含了用于操作Excel文件的API,例如...

    java 读取jar包文件

    在Java编程中,读取jar包内的文件是一个常见的需求,特别是在运行时动态加载资源或类文件时。Java提供了一种内置的方式,通过`java.util.jar`包中的`JarFile`和`JarInputStream`类来实现这个功能。下面将详细介绍...

    java读写properties配置文件

    这些文件通常包含了应用程序运行时所需的配置信息,如数据库连接信息、系统参数等。`Properties`类继承自`Hashtable`类,并通过键值对的形式存储数据。本文将详细介绍如何使用Java来读取和写入`Properties`配置文件...

Global site tag (gtag.js) - Google Analytics