• 5.8 Properties


    一、Propertie

    主要用于读写资源配置文件。

    Properties继承自Hashtable。

    我们来看下HashMap和Hashtable的区别:

      Hashtabl  线程安全,    同步,   效率较低。

      HashMap 线程不安全,不同步,效率高。

      Hashtable key和value都不能为空

      HashMap 允许一个key为null,允许多个value为null。

    Properties中每个key及value都只能是字符串,由于其继承自Hashtable所以都不能为空。

    为空会抛出NullPointException。

    二、常用方法

    getProperty(String key)

    根据key返回对应的value。


    getProperty(String key, String defaultValue)
    根据key返回对应的value,如果,不存在则返回defaultValue。

    defaultValue自己指定,作为key为空时的备用选项。

    setProperty(String key, String value)

    设置Properties的key和value

    我们先来用下这几个方法,和之前使用Map差不多

    import java.util.Iterator;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Properties;
    import java.util.Set;
    
    public class Test {
        public static void main(String args[]){
            Properties pro = new Properties();
            pro.setProperty("DIVER", "com.mysql.cj.jdbc.Driver");//添加元素
            pro.setProperty("URL", "jdbc:mysql://localhost:3306/jdbc");
            pro.setProperty("USER", "root");
            pro.setProperty("PASS", "xxxxxx");
            Set<Map.Entry<Object, Object>> mS= pro.entrySet();//使用迭代器输出所有元素
            Iterator<Map.Entry<Object,Object>> ite = mS.iterator();
            while(ite.hasNext()){
                Entry<Object,Object> en = ite.next();
                System.out.println("key:" +en.getKey() + "-->"+"value:" +en.getValue());
            }
        }
    }
    运行结果:
    key:PASS-->value:xxxxxx
    key:URL-->value:jdbc:mysql://localhost:3306/jdbc
    key:USER-->value:root
    key:DIVER-->value:com.mysql.cj.jdbc.Driver

    此时pro对象中就有这些配置信息,接下来那我们将这些配置信息生成配置文件。

    生成*.properties文件

    store(OutputStream out,String comments);

    生成*.xml文件

    storeToXml(OutputStream out,String comments);

    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Properties;
    import java.util.Set;
    
    public class Test {
        public static void main(String args[]) throws FileNotFoundException, IOException{
            Properties pro = new Properties();
            pro.setProperty("DIVER", "com.mysql.cj.jdbc.Driver");
            pro.setProperty("URL", "jdbc:mysql://localhost:3306/jdbc");
            pro.setProperty("USER", "root");
            pro.setProperty("PASS", "xxxxxx");
            pro.store(new FileOutputStream("E:/sqlProperties.properties"), "sql");//E盘下生成properties格式的文件
            pro.storeToXML(new FileOutputStream("E:/sqlXml.xml"), "sql");//E盘下生成xml格式文件
        }
    }

    运行后我们会发现E盘下多了两个文件:

     

    我们用记事本打开这两个文件:

    我们之前的配置信息就生成了对应的配置文件。 

    上面使用的是绝对路径,我们一般使用相对路径,默认在当前工程下。

    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Properties;
    import java.util.Set;
    
    public class Test {
        public static void main(String args[]) throws FileNotFoundException, IOException{
            Properties pro = new Properties();
            pro.setProperty("DIVER", "com.mysql.cj.jdbc.Driver");
            pro.setProperty("URL", "jdbc:mysql://localhost:3306/jdbc");
            pro.setProperty("USER", "root");
            pro.setProperty("PASS", "xxxxxx");
            pro.store(new FileOutputStream("sqlProperties.properties"), "sql");
            pro.storeToXML(new FileOutputStream("src/sqlXml.xml"), "sql");
        }
    }

    可以看到

    "sqlProperties.properties"是直接保存到当前项目下,

    "src/sqlXml.xml"是保存在当前工程下的src文件夹下。

    没有使用绝对路径的话,前端默认加上当前工程路径。

    这就是相对这个工程而言的相对路径。

  • 相关阅读:
    Mybatis的分页查询
    Mybatis的动态标签
    mybatis include标签
    mybatis 的<![CDATA[ ]]>
    Mybatis 示例之 SelectKey(转)
    mybatis foreach标签
    加密解密
    Sensor传感器(摇一摇)
    二维码的生成和扫描
    Camera摄像头
  • 原文地址:https://www.cnblogs.com/huang-changfan/p/9806856.html
Copyright © 2020-2023  润新知