曹杨教学点? 北桥教学点? 学校总部? | 设为首页 | 加入收藏 | 官方微信
365棋牌新手卡怎么使用_365棋牌全民游戏_365棋牌游客服充值
打造“培训+就业”一站式服务品牌!
  • Python+AI工程师
  • Web前端工程师
  • Java软件开发工程师
banner1

首页>>学员天地

Properties类应用详解
编辑:simon? 阅读:2329次? 发布:14-09-25

一、Java?Properties

???Java中有个比较重要的类PropertiesJava.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量设置。在Java中,其配置文件常为.properties文件,格式为文本文件,文件的内容的格式是“键=值”的格式,文本注释信息可以用"#"来注释。

Properties类继承自Hashtable,它提供了几个主要的方法:

1getProperty?(?String?key),用指定的键在此属性列表中搜索属性。通过参数?key,得到key所对应的value

2load?(?InputStream?inStream),从输入流中读取属性列表(键和元素对)。通过对指定的文件(比如说上面的?test.properties?文件)进行装载来获取该文件中的所有键-值对。以供?getProperty?(?String?key)?来搜索。

3setProperty?(?String?key,?String?value)?,通过调用基类的put方法来设置键-值对。

4store?(?OutputStream?out,?String?comments),以适合使用?load?方法加载到?Properties?表中的格式,将此?Properties?表中的属性列表(键和元素对)写入输出流。与?load?方法相反,该方法将键-值对写入到指定的文件中去。

5clear?(),清除所有装载的键-值对。该方法在基类中提供。

?

?二、Java读取Properties文件

???Java读取Properties文件的方法有很多,最常用的还是通过java.lang.Class类的getResourceAsStream(String?name)方法来实现,如下可以这样调用:

???InputStream?in?=?getClass().getResourceAsStream("资源Name");

?下面这种也常用:

InputStream?in?=?new?BufferedInputStream(new?FileInputStream(filepath));

?

三、相关实例

1、获取JVM的系统属性

?import?java.util.Properties;

?public?class?ReadJVM?{

?????public?static?void?main(String[]?args)?{

?????????Properties?pps?=?System.getProperties();

?????????pps.list(System.out);

?????}

?}?

2、随便新建一个配置文件(Test.properties

name=JJ

Weight=4444

Height=3333?

public?class?getProperties?{

?????public?static?void?main(String[]?args)?throws?FileNotFoundException,?IOException?{

?????????Properties?pps?=?new?Properties();

?????????pps.load(new?FileInputStream("Test.properties"));

?????????Enumeration?enum1?=?pps.propertyNames();//得到配置文件的名字

?????????while(enum1.hasMoreElements())?{

?????????????String?strKey?=?(String)?enum1.nextElement();

?????????????String?strValue?=?pps.getProperty(strKey);

?????????????System.out.println(strKey?+?"="?+?strValue);

?????????}

?????}

?}?

?

3、一个比较综合的实例

?public?class?TestProperties?{

?????//根据Key读取Value

?????public?static?String?GetValueByKey(String?filePath,?String?key)?{

?????????Properties?pps?=?new?Properties();

?????????try?{

?????????????InputStream?in?=?new?BufferedInputStream?(new?FileInputStream(filePath));??

?????????????pps.load(in);

?????????????String?value?=?pps.getProperty(key);

?????????????System.out.println(key?+?"?=?"?+?value);

?????????????return?value;

?????????????

?????????}catch?(IOException?e)?{

?????????????e.printStackTrace();

?????????????return?null;

?????????}

?????}

?????

???//读取Properties的全部信息

?????public?static?void?GetAllProperties(String?filePath)?throws?IOException?{

?????????Properties?pps?=?new?Properties();

?????????InputStream?in?=?new?BufferedInputStream(new?FileInputStream(filePath));

?????????pps.load(in);

????Enumeration?en?=?pps.propertyNames();?//得到配置文件的名字

?????????while(en.hasMoreElements())?{

?????????????String?strKey?=?(String)?en.nextElement();

?????????????String?strValue?=?pps.getProperty(strKey);

?????????????System.out.println(strKey?+?"="?+?strValue);

?????????}

?????????

?????}

?????

?????//写入Properties信息

?????public?static?void?WriteProperties?(String?filePath,?String?pKey,?String?pValue)?throws?IOException?{

?????????Properties?pps?=?new?Properties();

????????InputStream?in?=?new?FileInputStream(filePath);

?????????pps.load(in);

?????????OutputStream?out?=?new?FileOutputStream(filePath);

?????????pps.setProperty(pKey,?pValue);

????????pps.store(out,?"Update?"?+?pKey?+?"?name");

?????}

?????

?????public?static?void?main(String?[]?args)?throws?IOException{

?????????//String?value?=?GetValueByKey("Test.properties",?"name");

?????????//System.out.println(value);

?????????//GetAllProperties("Test.properties");

?????????WriteProperties("Test.properties","long",?"212");

?????}

?}?

?

?

结果:

Test.properties中文件的数据为:

#Update?long?name

#Sun?Feb?23?18:17:16?CST?2014

name=JJ

Weight=4444

long=212

Height=3333



上一篇:?java 字符串函数的用法和实例演示? ?下一篇:?JAVA环境变量配置java_home,classpath等的作用
网络大专、自考本科,学历轻松拿!
?2016-2020 上海内威职业技能培训学校 版权所有
普陀区真南路1051弄5号303室(邮编:200331)
咨询:021-62434966? 合作:021-13371929650? 就业:021-62434966? 传真:021-? 电邮:service@snetway.com
《中华人民共和国电信与信息服务业务》经营许可证沪ICP备15002602号?