在当前的一个项目中,遇到以下业务需要:
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();//每次调用这个方法都会从配置文件里取到最新的参数 } }
相关推荐
本文将详细介绍如何在Eclipse中将项目打包成JAR文件,并确保能正确引用外部JAR包和读取外部配置文件。 首先,我们来看如何打包项目为JAR。在Eclipse中,选择`Export` -> `Java` -> `Runnable JAR file`。在弹出的...
本篇文章将详细探讨如何通过Python来读取并解析`.properties`配置文件。 首先,了解`.properties`文件的格式。这种文件通常用于存储配置信息,其中键值对以等号`=`分隔,每一行代表一个键值对,注释以`#`或`!`开始...
标题提及的"读取properties配置文件所用jar"主要指的是Apache Commons Configuration库,这是一个强大的Java库,它提供了读取和写入不同类型的配置文件(包括.properties文件)的能力。在这个场景中,我们使用的是...
在Java编程中,`properties`文件是一种常用的存储配置信息的方式,它以键值对的形式组织数据,便于程序在运行时动态获取和修改配置。本文将详细介绍如何在Java中读取`properties`配置文件。 首先,我们需要了解`...
这里的`classpath:`前缀表示从类路径中查找资源,如果应用被打包成JAR,这个配置文件会被包含在JAR的根目录下`/config/`路径中。 然而,当配置文件位于JAR的嵌套目录,例如`META-INF/config/application.properties...
- `load(InputStream input)`:接受一个`InputStream`,通常是从文件系统、类路径或网络流中获取。 - `load(Reader reader)`:接受一个`Reader`,适用于处理Unicode编码的文件。 示例代码: ```java ...
JAR文件是Java类文件和相关资源的容器,它们被组织成目录结构,类似于Unix或Windows的文件系统。每个JAR文件包含一个META-INF目录,其中的MANIFEST.MF文件记录了JAR的基本信息,如主类(Main-Class)等。 1. **打包...
### C#操作Properties,读写配置文件 在C#编程中,经常需要处理应用程序的配置信息,例如数据库连接字符串、用户界面的语言设置等。这些配置信息通常存储在配置文件中,便于程序运行时动态加载和修改。C#提供了一种...
如果你的项目使用了Spring框架,可以利用Spring的`Resource`接口来读取配置文件,它支持从类路径、文件系统、URL等多种来源加载资源: ```java Resource resource = new ClassPathResource("config.properties");...
因此,在运行时,我们无法直接通过文件系统路径去访问这些资源文件。我们需要使用类加载器(ClassLoader)来访问它们。 在开发环境中,可以通过`ResourceUtils.getFile(ResourceUtils.CLASSPATH_URL_PREFIX + ...
然而,有时可能会遇到一些常见问题,比如系统找不到指定的Properties文件路径、写入后读取显示正常但实际文件数据未更新等。下面我们将详细讨论这些问题及其解决方案。 首先,让我们看看如何在Java中正确地读取...
标题"读取war包或jar包内的文件"涉及到的知识点主要是如何在程序中动态地获取并读取这些归档文件中的内容,这对于理解和处理Java应用的部署和运行至关重要。这篇博客(虽然链接未提供具体内容)可能探讨了以下关键点...
在Android开发中,读取`properties`文件是一个常见的任务,主要用于存储配置信息或者与Java中的`.properties`文件进行交互。`.properties`文件是一种简单的键值对格式,常用于跨平台的配置存储。以下是对这个主题的...
在JavaScript(JS)环境中,读取.properties文件通常用于处理配置数据或者本地化文本。这些文件在Java开发中广泛使用,但JavaScript同样可以借助一些库或技术来读取它们。下面我们将详细探讨如何在JavaScript中实现...
在Ubuntu系统中,开发C++程序时经常需要处理配置文件,而INI文件因其简洁明了的格式,常被用于存储应用程序的配置参数。本模块提供了一种在Ubuntu环境下使用C++读取INI配置文件的方法,使得开发者能方便地获取和修改...
在处理Properties文件时,可能会遇到几个常见的问题,包括找不到指定路径、读取正常但文件数据未更新的情况。以下是对这些问题的详细解答。 首先,让我们解决“系统找不到指定路径”的问题。在Java中,加载...
ConfigFile configfile = ConfigFile.getInstance("ipConfig123.properties"); String ip = configfile.getkeyvalue("ip"); 可以取出ipConfig123.properties 文件中IP的内容
在Java编程中,读取配置文件是常见的任务,主要用于存储应用程序的设置或环境变量,以方便管理和维护。Java提供了一个内置的`java.util.Properties`类,用于处理`.properties`文件,这种格式通常用来存储键值对,即...
总结,Java中读取Properties文件是通过`java.util.Properties`类来实现的,涉及的关键步骤包括加载文件、获取键值对以及处理可能的异常。这种机制在许多场景下都非常实用,如数据库连接配置、应用设置等。理解并熟练...