一.简介:

  Properties是java中用的比较多的一个类,表示一个持久的属性集。继承于Hashtable,Properties可从流中加载,也可保存在流中。属性列表中每个键极其对应值共同组成一个字符串。也即可以理解为KEY-VALUE的形式。

  很多时候为了提高程序的应用效率,这类Properties文件可以保存在缓存系统中,因此,在操作一些特有数据时可以选择使用Properties。在开发过程中,需要灵活使用。在本博文中将详细介绍该类的使用,以及将Properties文件保存为XML文件和读取XML文件中的KEY值等,由于在本案例中,代码里面使用了详细的注释,因此,为了减少篇幅,仅留下对代码理解有用的信息,所以不再过多的阐述。

  本博文时本人的劳动成果所得,在博客园总结分享,欢迎转载。在没有作者的书面说明的情况下,必须保留本段声明。作者:itRed  邮箱:it_red@sina.com  博客链接:http://www.cnblogs.com/itred  GitHub链接:http://github.com/itred

二.案例:

  1. 新建项目:

    在本DEMO中,不介绍文件的创建过程,直接采用手动创建。新建一个java项目,并且,在项目目录下新建一个properties文件,用于存放我们即将操作的字符串(可以理解为key-value的键值对字符串)。

  2. 添加一个key-value字符串:

    主要思路是首先加载这个Properties文件,其中需要注意的是,这个写入进去之后是必须要进行保存的,所以,不仅需要输入流,更需要输出流。这里利用setProperty进行键入key-value值,再利用store进行保存。关键代码如下:

    in = new BufferedInputStream(new FileInputStream(PROPS_PATH));
    props.load(in);
ou = new BufferedOutputStream(new FileOutputStream(PROPS_PATH));
props.setProperty(key, value);
props.store(ou, "INSERT KEY-VALUE :" + key + "=" + value + "***");

  3. 将map中的key-value全部写入Properties中:

    因为Map也是属于Key-Value类型的键值对,所以和Properties可以进行近似的理解。要实现将map中的所有值写入到Properties文件中,其实主要思路与上面是一样的,只是在写入时需要遍历Map中的所有Key值和Value值。关键代码如下:

    in = new BufferedInputStream(new FileInputStream(PROPS_PATH));
props.load(in);
os = new BufferedOutputStream(new FileOutputStream(PROPS_PATH));
for (Map.Entry<String, String> entry : map.entrySet()) {
props.setProperty(entry.getKey(), entry.getValue());
}
props.store(os, "Insert all map");

  4. 遍历Properties中的所有Key值和value值:

    直接将其以流的形式加载到内存中,直接进行获取所有值。其实,实现这个遍历的方法还有很多,本例使用实现后的关键代码如下:

    in = new BufferedInputStream(new FileInputStream(PROPS_PATH));
props.load(in);
Enumeration enu = props.propertyNames();
props.list(System.out);
while (enu.hasMoreElements()) {
System.out.println("(KEY)" + enu.nextElement() + "=(VALUE)"
+ props.getProperty((String) enu.nextElement()));
}

  5. 通过key值获取map值:

    因为和map差不多都是存放key-value形式的键值对字符串,因此很自然想到只取该文件中某个key的value值。仅仅需要props.getProperty(key)便可完成。

  6. 将该Properties文件中的key-value保存为xml文件:

    实现的思路是直接调用Properties类中的一个方法storeToXml()就可以顺利完成。关键代码如下:

    in = new BufferedInputStream(new FileInputStream(PROPS_PATH));
props.load(in);
ou = new BufferedOutputStream(new FileOutputStream(new File(
"D:/test.xml")));
props.storeToXML(ou, "测试");

  7. 从xml中获取key的value值:

   以流的形式加载xml文件,然后通过方法loadFromXML()读入到properties,再通过getProperty()进行取值。

    Properties props = new Properties();
String XML_PATH = "D:/test.xml";
InputStream in = null;
try {
in = new BufferedInputStream(
new FileInputStream(new File(XML_PATH)));
props.loadFromXML(in);
String value = props.getProperty(key);
return value;
} catch (Exception e) {
e.printStackTrace();
       return "";
}

三.总结:

    其实Properties的使用是很简单的,但是对于从未使用过这个类的朋友而言,真心不知该从何下手。对此,本人也是深有体会。与其用一个方法查询一个方法,倒还不如一次性对该Properties文件中的方法进行一个全面的了解,这样,在以后的日子里,用起来也得心应手,十分方便。

    本案例是本人的学习总结,代码实现仅作功能性测试使用,不可用于生产过程,因为,不断的进行流文件的加载的打开,在本例中未进行及时的关闭操作。所以,如果需要应用于实际生产中,需要在finally中,及时的关闭Properties文件。

    另附本案例中所涉及到的案例源码请点击链接

 作者:itRed
博客:http://itred.cnblogs.com
GitHub:https://github.com/itRed
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段说明,
且在文章明显位置给出原文链接,否则保留追究法律责任的权利。

Properties操作指南的更多相关文章

  1. TortoiseSVN 日常操作指南

    TortoiseSVN A Subversion client for Windows Stefan Küng Lübbe Onken Simon Large 2005/01/17 19:09:21 ...

  2. kafka集群操作指南

    目录 kafka集群操作指南 (一)单机版安装 (二)集群安装 (三)集群启停操作 (四)topic相关的操作 (五)某个broker挂掉,本机器可重启 (六)某个broker挂掉且无法重启,需要其它 ...

  3. 开放应用模型操作指南(一)| 云服务一键接入 OAM 体系

    作者 | 邓洪超  阿里云容器平台软件工程师 导读:Open Application Model(OAM)是阿里云联合微软等国际顶级技术团队联合发布的开放应用模型技术.旨在通过全新的应用定义.运维.分 ...

  4. 【项目管理】GitHub使用操作指南

    GitHub使用操作指南 作者:白宁超 2016年10月5日18:51:03> 摘要:GitHub的是版本控制和协作代码托管平台,它可以让你和其他人的项目从任何地方合作.相对于CVS和SVN的联 ...

  5. spring无法读取properties文件数据

    只讲述异常点,关于怎么配置文件,这里不做说明.   1. controller中无法读取config.properties文件 controller中注入的@Value配置是从servlet-cont ...

  6. Android local.properties 文件读取

    转载请标明出处:http://www.cnblogs.com/zhaoyanjun/p/6202369.html 本文出自[赵彦军的博客] 在Android Studio项目里面有个local.pro ...

  7. Crystal Clear Applied: The Seven Properties of Running an Agile Project (转载)

    作者Alistair Cockburn, Crystal Clear的7个成功要素,写得挺好. 敏捷方法的关注点,大家可以参考,太激动所以转载了. 原文:http://www.informit.com ...

  8. hibernate-mapping-3.0.dtd;hibernate-configuration-3.0.dtd;hibernate.properties所在路径

    hibernate-mapping-3.0.dtd 所在路径:hibernate-release-5.2.5.Final\project\hibernate-core\src\main\resourc ...

  9. Titanium.App.Properties 对象

    Titanium.App.Properties是用来管理键值对数据的一个很方便的对象.在保存数据的时候,在Ti.App.Properties.setString相对应的Key的值中设置你要保存的值即可 ...

随机推荐

  1. 【Win 10 应用开发】应用预启动

    所谓预启动,其实你一看那名字就知道是啥意思了,这是直接译,也找不到比这个叫法更简练的词了.在系统资源允许的情况下(比如电池电量充足,有足够的内存空间),系统会把用户常用的应用程序在后台启动,但不会显示 ...

  2. PHP-解析验证码类--学习笔记

    1.开始 在 网上看到使用PHP写的ValidateCode生成验证码码类,感觉不错,特拿来分析学习一下. 2.类图 3.验证码类部分代码 3.1  定义变量 //随机因子 private $char ...

  3. 隐马尔科夫模型python实现简单拼音输入法

    在网上看到一篇关于隐马尔科夫模型的介绍,觉得简直不能再神奇,又在网上找到大神的一篇关于如何用隐马尔可夫模型实现中文拼音输入的博客,无奈大神没给可以运行的代码,只能纯手动网上找到了结巴分词的词库,根据此 ...

  4. 使用Zabbix监控Oracle数据库

    Orabbix介绍 监控Oracle数据库我们需要安装第三方提供的Zabbix插件,我们先测试比较有名的Orabbix,http://www.smartmarmot.com/product/orabb ...

  5. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)

    集群概念介绍(一)) 白宁超 2015年7月16日 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习 ...

  6. 最好的.NET开源免费ZIP库DotNetZip(.NET组件介绍之三)

    在项目开发中,除了对数据的展示更多的就是对文件的相关操作,例如文件的创建和删除,以及文件的压缩和解压.文件压缩的好处有很多,主要就是在文件传输的方面,文件压缩的好处就不需要赘述,因为无论是开发者,还是 ...

  7. 深入浅出JavaScript之闭包(Closure)

    闭包(closure)是掌握Javascript从人门到深入一个非常重要的门槛,它是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现.下面写下我的学习笔记~ 闭包-无处不 ...

  8. css常用hack

    原文地址:css常用hack 突然想起今天早上在CNZZ看到的统计数据,使用IE6.7的用户比例还真多,看到之后我的心都碎了.微软都放弃了为毛还有这么多人不死心? 所以说,IE下的兼容还是得做的. – ...

  9. 【干货分享】流程DEMO-加班与调休

    流程名: 加班.调休  业务描述: 加班: 工作日加班可以申请调休,也可以申请支付加班费.原则上都应申请调休:周末加班原则上申请调休:法定节假日加班支付加班费. 加班申请以半小时为单位. 当月加班不能 ...

  10. SSIS 包部署 Package Store 后,在 IS 中可以执行,AGENT 执行却报错

    可以执行 SSIS Package ,证明用 SSIS Package 的账户是可以执行成功的.SQL Server Agent 默认指定账号是 Network Service. 那么可以尝试一下将 ...