700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Java读取Properties配置文件

Java读取Properties配置文件

时间:2019-05-18 05:47:40

相关推荐

Java读取Properties配置文件

目录

1.Properties类与Properties配置文件

2.Properties中的主要方法

3.示例

1.Properties类与Properties配置文件

Properties类继承自Hashtable类并且实现了Map接口,使用键值对的形式来保存属性集。不过Properties的键和值都是字符串类型。

2.Properties中的主要方法

(1)load(InputStream inStream)

此方法可以从.properties属性文件对应的文件输入流中,加载属性列表到Properties类对象。用于读取Properties配置文件。

Propertiesprop=newProperties();//读取属性文件a.propertiesInputStreamin=newBufferedInputStream(newFileInputStream("a.properties"));prop.load(in);///加载属性列表Iterator<String>it=prop.stringPropertyNames().iterator();while(it.hasNext()){Stringkey=it.next();System.out.println(key+":"+prop.getProperty(key));}in.close();

(2)store(OutputStream out, String comments)

此方法将Properties类对象的属性列表保存到输出流中。用于写Properties配置文件。

Propertiesprop=newProperties();//保存属性到b.properties文件FileOutputStreamoFile=newFileOutputStream("b.properties",true);//true表示追加打开prop.setProperty("phone","10086");prop.store(oFile,"Comment");//如果comments不为空,保存后的属性文件第一行会是#comments,表示注释信息;如果为空则没有注释信息。注释信息后面是属性文件的当前保存时间信息。oFile.close();

(3)getProperty/setProperty

这两个方法是分别是获取和设置属性信息。

3.示例

下面是黄勇老师写的获取属性文件的工具类。

/***属性文件工具类*/publicfinalclassPropsUtil{privatestaticfinalLoggerLOGGER=LoggerFactory.getLogger(PropsUtil.class);/***加载属性文件*/publicstaticPropertiesloadProps(StringfileName){Propertiesprops=null;InputStreamis=null;try{is=Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName);if(is==null){thrownewFileNotFoundException(fileName+"fileisnotfound");}props=newProperties();props.load(is);}catch(IOExceptione){LOGGER.error("loadpropertiesfilefailure",e);}finally{if(is!=null){try{is.close();}catch(IOExceptione){LOGGER.error("closeinputstreamfailure",e);}}}returnprops;}/***获取字符型属性(默认值为空字符串)*/publicstaticStringgetString(Propertiesprops,Stringkey){returngetString(props,key,"");}/***获取字符型属性(可指定默认值)*/publicstaticStringgetString(Propertiesprops,Stringkey,StringdefaultValue){Stringvalue=defaultValue;if(props.containsKey(key)){value=props.getProperty(key);}returnvalue;}/***获取数值型属性(默认值为0)*/publicstaticintgetInt(Propertiesprops,Stringkey){returngetInt(props,key,0);}//获取数值型属性(可指定默认值)publicstaticintgetInt(Propertiesprops,Stringkey,intdefaultValue){intvalue=defaultValue;if(props.containsKey(key)){value=CastUtil.castInt(props.getProperty(key));}returnvalue;}/***获取布尔型属性(默认值为false)*/publicstaticbooleangetBoolean(Propertiesprops,Stringkey){returngetBoolean(props,key,false);}/***获取布尔型属性(可指定默认值)*/publicstaticbooleangetBoolean(Propertiesprops,Stringkey,booleandefaultValue){booleanvalue=defaultValue;if(props.containsKey(key)){value=CastUtil.castBoolean(props.getProperty(key));}returnvalue;}}

里面用到了CastUtil类,该类是为了处理一些数据转型操作而准备的,代码如下:

/***转型操作工具类*/publicfinalclassCastUtil{/***转为String型*/publicstaticStringcastString(Objectobj){returnCastUtil.castString(obj,"");}/***转为String型(提供默认值)*/publicstaticStringcastString(Objectobj,StringdefaultValue){returnobj!=null?String.valueOf(obj):defaultValue;}/***转为double型*/publicstaticdoublecastDouble(Objectobj){returnCastUtil.castDouble(obj,0);}/***转为double型(提供默认值)*/publicstaticdoublecastDouble(Objectobj,doubledefaultValue){doubledoubleValue=defaultValue;if(obj!=null){StringstrValue=castString(obj);if(StringUtil.isNotEmpty(strValue)){try{doubleValue=Double.parseDouble(strValue);}catch(NumberFormatExceptione){doubleValue=defaultValue;}}}returndoubleValue;}/***转为long型*/publicstaticlongcastLong(Objectobj){returnCastUtil.castLong(obj,0);}/***转为long型(提供默认值)*/publicstaticlongcastLong(Objectobj,longdefaultValue){longlongValue=defaultValue;if(obj!=null){StringstrValue=castString(obj);if(StringUtil.isNotEmpty(strValue)){try{longValue=Long.parseLong(strValue);}catch(NumberFormatExceptione){longValue=defaultValue;}}}returnlongValue;}/***转为int型*/publicstaticintcastInt(Objectobj){returnCastUtil.castInt(obj,0);}/***转为int型(提供默认值)*/publicstaticintcastInt(Objectobj,intdefaultValue){intintValue=defaultValue;if(obj!=null){StringstrValue=castString(obj);if(StringUtil.isNotEmpty(strValue)){try{intValue=Integer.parseInt(strValue);}catch(NumberFormatExceptione){intValue=defaultValue;}}}returnintValue;}/***转为boolean型*/publicstaticbooleancastBoolean(Objectobj){returnCastUtil.castBoolean(obj,false);}/***转为boolean型(提供默认值)*/publicstaticbooleancastBoolean(Objectobj,booleandefaultValue){booleanbooleanValue=defaultValue;if(obj!=null){booleanValue=Boolean.parseBoolean(castString(obj));}returnbooleanValue;}}

castUtil类中用到了StringUtil类,它提供一些字符串操作,代码如下:

/***字符串工具类*/publicfinalclassStringUtil{/***判断字符串是否为空*/publicstaticbooleanisEmpty(Stringstr){if(str!=null){str=str.trim();}returnStringUtils.isEmpty(str);}/***判断字符串是否非空*/publicstaticbooleanisNotEmpty(Stringstr){return!isEmpty(str);}}

这样就可以直接运用这个工具类操作Properties配置文件了。

操作示例(获取一个int属性的值,并给一个默认值1):

Propertiesconf=PropsUtil.loadProps("config.properties");intvalue=PropsUtil.getInt(conf,"key",1);

这样操作就方便多了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。