zoukankan      html  css  js  c++  java
  • java.util.Properties类 学习笔记

    学习目标:
     
    1、认识properties文件,理解其含义,会正确创建properties文件。
    2、会使用java.util.Properties类来操作properties文件。
    3、掌握相对路径,能正确书写一个properties文件的相对路径。
     
    一、认识properties文件
     
    1、properties文件是一个文本文件
    2、properties文件的语法有两种,一种是注释,一种属性配置。
     注    释:前面加上#号
     属性配置:以“键=值”的方式书写一个属性的配置信息。
    3、properties文件的一个属性配置信息值可以换行,但键不可以换行。值换行用“”表示。
    4、properties的属性配置键值前后的空格在解析时候会被忽略。
    5、properties文件可以只有键而没有值。也可以仅有键和等号而没有值,但无论如何一个属性配置不能没有键。
     
     
    例如,下面一个properties文件:
    #正确的properties配置文件 
    aaa=1 
        11 
    b 
    bb    =     222
     
    #格式良好的properties文件 
    aaa=111 
    bbb=222
     
    二、解读java.util.Properties类
     
    1、Properties类的层次结构
    java.lang.Object
      java.util.Dictionary<K,V>
          java.util.Hashtable<Object,Object>
              java.util.Properties
     
    从层次机构看,Properties类实现了Map接口,因为HashTable实现了Map接口,因此Properties类本质上是一种简单的Map容器。
    实际上,Properties类本身表示了对一种Map结构的操作。properties文件本身就表示了一个“键值对”的集合。因此,Properties类属于集合容器的家族,在使用前应该创建一个Properties的容器,实际上就是创建一个默认不带参数的 Properties对象。以后通过别的方式给里面添加“键值对”。
     
    2、properties文件与Properties类的关系
    通过properties文件可以填充Properties类。
    也可以通过xml文件来填充Properties类。
    可以通过绝对路径方式加载Properties文件信息,也可以使用相对路径加载。
     
    三、实践
     
    1、以绝对相对路径方式加载properties文件信息。
    2、将Properties对象持久化到一个properties文件或者一个xml文件中。
    3、修改并持久化properties文件。
     
    测试代码:
     
    测试的properties文件:
    #格式良好的properties文件 
    aaa=111 
    bbb=222
     
    测试类:
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Enumeration;
    import java.util.Properties;
    
    
    public class test {
    
        /**
         * @param args
         * @throws Exception 
         */
        public static void main(String[] args) throws Exception {
            //a=111
            //b=222
            String realPath="d:\p.txt";
            //将properties文件加载到输入字节流中 
            InputStream is = new FileInputStream(realPath); 
            //创建一个Properties容器 
            Properties prop = new Properties(); 
            //从流中加载properties文件信息 
            prop.load(is);         
            getPro(prop);       
            export(prop);  
            importer(prop);
            is.close();
        }
            
        public static void getPro(Properties prop) throws Exception{
    
            //读取某一key值
            System.out.println(prop.getProperty("b"));
          //读取某一key值,没有则输出默认值
            System.out.println(prop.getProperty("c","default"));
          //读取某一key值
            System.out.println(prop.get("b"));
            
            //循环输出配置信息 
            for (Object key : prop.keySet()) { 
                    System.out.println(key + "=" + prop.get(key)); 
            } 
                 
            prop.setProperty("d", "dddd");
            System.out.println("setProperty后");
            //循环输出配置信息 
            Enumeration e=prop.propertyNames();
            while (e.hasMoreElements()) { 
                 System.out.println(e.nextElement());
            }       
            System.out.println("-------------------getPro-------------------");
        }
        
        
        public static void export(Properties prop) throws IOException{
            //定义一个输出流 
            OutputStream os1 = new FileOutputStream("d:\ttt.xml"); 
            OutputStream os2 = new FileOutputStream("d:\ttt.properties"); 
    
            //从Properties对象导出导出到xml 
            prop.storeToXML(os1, "我从properties导出的XML配置文件"); 
            //从Properties对象导出properties文件 
            prop.store(os2, "我从properties导出的properties配置文件"); 
            os1.close(); 
            os2.close(); 
            
            System.out.println("-------------------export-------------------");
        }
        
        public static void importer(Properties prop) throws Exception, FileNotFoundException, IOException{
            //从xml加载配置信息,填充Properties容器 
            prop.loadFromXML(new FileInputStream("d:\ttt.xml")); 
            //循环输出配置信息 
            System.out.println("我从导出的xml加载配置文件信息!"); 
            for (Object key : prop.keySet()) { 
                    System.out.println(key + "=" + prop.get(key)); 
            } 
            System.out.println("-------------------importer-------------------");
        }
    
    }

    输出

    d:盘下写入的文件如下:

  • 相关阅读:
    Django ORM 进行查询操作和性能优化
    Python PIL 长文本换行,二维码,图片合成
    python 常用的资料链接
    人生苦短,我用Python
    windows下搭建Python virtualenvvirtualenvwrapper虚拟环境。
    Python 文件上传base64图片
    python实现中文转换url编码的方法
    同时装了Python3和Python2,怎么用pip?
    统计当天下单量
    Django ORM 级联删除
  • 原文地址:https://www.cnblogs.com/crazylqy/p/4173498.html
Copyright © 2011-2022 走看看