Properties操做指南

一.简介:java

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

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

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

二.案例:学习

  1. 新建项目:

      在本DEMO中,不介绍文件的建立过程,直接采用手动建立。新建一个java项目,而且,在项目目录下新建一个properties文件,用于存放咱们即将操做的字符串(能够理解为key-value的键值对字符串)。   测试

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

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

    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中:xml

    由于Map也是属于Key-Value类型的键值对,因此和Properties能够进行近似的理解。要实现将map中的全部值写入到Properties文件中,其实主要思路与上面是同样的,只是在写入时须要遍历Map中的全部Key值和Value值。关键代码以下:blog

    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
相关文章
相关标签/搜索