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文件夹下。
没有使用绝对路径的话,前端默认加上当前工程路径。
这就是相对这个工程而言的相对路径。
上一篇: 用ASP实现在线压缩与解压缩
下一篇: OpenCV 的颜色空间转换