实现时主要使用Commons-Configuration.jar包,还需要commons-lang,disgestor,beanutils,collections等,

package propFile;

import java.net.URL;

import java.util.List;

import org.apache.commons.configuration.Configuration;

import org.apache.commons.configuration.ConfigurationException;

import org.apache.commons.configuration.ConfigurationFactory;

import org.apache.commons.configuration.PropertiesConfiguration;

import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;

/**

* 修改 properties 文件时,每次都要重启应用程序, Commons-Configuration 调用 getXxxx 方法获取到的内容都是

* properties 文件中最新的,无需重启应用

*

* @author zhaigx

* @DATA 2011-5-27

*/

public class PropertiesUtil {

static String propertiesFile = "config/config.properties";

static PropertiesConfiguration propConfig;

static Configuration multiConfig;

static boolean isReload = true;

private PropertiesUtil() {

}

private static void reloadPropFile() {

if (isReload) {

try {

propConfig = new PropertiesConfiguration(propertiesFile);

propConfig

.setReloadingStrategy(new FileChangedReloadingStrategy());

} catch (ConfigurationException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

isReload = false;

}

public static Object getValueFromPropFile(String key) {

reloadPropFile();

return propConfig.getProperty(key);

}

public static String[] getArrFromPropFile(String key){

reloadPropFile();

return propConfig.getStringArray(key);

}

private static void reloadMultiConfigFile() {

ConfigurationFactory factory = new ConfigurationFactory();

String file = "config/xml-prop.xml";

System.out.println("multiConfigFile==> " + file);

factory.setConfigurationFileName(file);

try {

multiConfig = factory.getConfiguration();

} catch (ConfigurationException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static Object getValueFromMultiFile(String key) {

reloadMultiConfigFile();

return multiConfig.getProperty(key);

}

}

测试类:

package propFile;

import java.util.List;

import propFile.PropertiesUtil;

public class PropertiesUtilTest {

/**

*

* @author zhaigx

* @param args

* @DATE 2011-5-27

*/

public static void main(String[] args) {

//  for (int i = 0; i < 1000; i++) {

//   String valueString = (String) PropertiesUtil

//     .getValueFromPropFile("name");

//   System.out.println(valueString);

//   try {

//    Thread.sleep(1000);

//   } catch (InterruptedException e) {

//    // TODO Auto-generated catch block'

//    e.printStackTrace();

//   }

//  }

String[] country=(String[])PropertiesUtil.getArrFromPropFile("country");

for (int i = 0; i < country.length; i++) {

System.out.println(country[i]);

}

List list = (List) PropertiesUtil

.getValueFromMultiFile("start-criteria.criteria");

for (int i = 0; i < list.size(); i++) {

String value = list.get(i).toString();

System.out.println(value);

}

for (int i = 0; i < 1000; i++) {

int intValue = Integer.parseInt(PropertiesUtil

.getValueFromMultiFile("horsepower").toString());

System.out.println(intValue);

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

config目录下的配置文件:

config.properties:

a=1

b=3

name=to

country = USA,China,English

xml-prop.xml:

global.properties:

threads.maximum=50

threads.minimum=20

timeout=15.52

interactive=true

color=red

speed=50

name=Default User

region=Earth

global.xml:

Temperature Above -10 Celsius

Fuel tank is not empty

4 Liters

77

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐