概述:我们在做项目时,经常需要从某个properties文件中读取properties文件中的值。现在我封装了一下方法,直接读取配置文件中的值。
代码如下所示:
/**
* Created by qinlinsen on 2017-07-03.
* 本例只要是读取任何一个.properties文件的值。如果配置文件没有的话都设有默认值,从而避免了NullPointException.
*/
public class KSConfigurationTest {
Properties properties;
/**
* 使用饱汉模式的双重锁模式创建一个实例
*/
private static KSConfigurationTest ksConfigurationTest;
//定义一个私有的构造方法
private KSConfigurationTest(){ }
public static KSConfigurationTest getKsConfigurationTest(){
if(null==ksConfigurationTest){
synchronized (KSConfigurationTest.class){
if(null==ksConfigurationTest){
ksConfigurationTest=new KSConfigurationTest();
}
}
}
return ksConfigurationTest;
} /**该方法读取properties文件中的value值,在value不为空是返回value值,否则返回的是默认值。
* @param key properties文件中的key值 如文件中username=qinlinsen 其中username就是key
* @param resource properties文件所在的classpath中的路径
* @param defaultValue 所设的默认值
* @return 返回properties文件中的value.
*/
public String getProperty(String key,String resource,String defaultValue){
//获取ksconfig.properties文件的属性值
properties=new Properties();
InputStream in = KSConfigurationTest.getKsConfigurationTest().getClass().getClassLoader().getResourceAsStream(resource);
try {
properties.load(in);
} catch (IOException e) {
e.printStackTrace();
}
String value = properties.getProperty(key);
if(value==null){
return defaultValue;
}
return value;
}
//字符串的默认值为:"";
public String getProperty(String key,String resource){
String value = getProperty(key, resource, "");
return value;
}
public int getPropertyAsInt(String key,String resource,Integer defautValue){
String stringValue = defautValue.toString();
String value = getProperty(key, resource, stringValue);
return Integer.parseInt(value);
}
//设默认值为1
public int getPropertyAsInt(String key,String resource){
int value = getPropertyAsInt(key, resource, );
return value;
}
public static void main(String[] args) {
//这是测试代码
String key = KSConfiguration.getInstance().getProperty("app_id");
System.out.println(key);
System.out.println("key="+key);
System.out.println(Boolean.valueOf("people"));
System.out.println(Boolean.valueOf("TRu"));
String app_id = KSConfigurationTest.getKsConfigurationTest().getProperty("app_id", "ksconfig.properties");
System.out.println("app_id="+app_id);
int parsec = KSConfigurationTest.getKsConfigurationTest().getPropertyAsInt("parsec", "helloworld.properties");
System.out.println("parsec="+parsec);
String username = KSConfigurationTest.getKsConfigurationTest().getProperty("username", "spring/test.properties");
System.out.println("username="+username);
}
}