当前位置: 移动技术网 > IT编程>开发语言>Java > 5.8 Properties

5.8 Properties

2018年10月19日  | 移动技术网IT编程  | 我要评论

一、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文件夹下。

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

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网