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文件夹下。
没有使用绝对路径的话,前端默认加上当前工程路径。
这就是相对这个工程而言的相对路径。
推荐阅读
-
品牌库存分销平台“爱库存”完成5.8亿元B轮融资
-
使用Properties集合操作存储数据
-
如何在Laravel5.8中正确地应用Repository设计模式
-
IDEA开发spring boot应用时 application.yml 或 application.properties 自定义属性提示
-
详解Java中log4j.properties配置与加载应用
-
JSP 中Spring的Resource类读写中文Properties实例代码
-
Java 使用properties配置文件加载配置
-
基于redis.properties文件的配置及说明介绍
-
mybatis 使用jdbc.properties文件设置不起作用的解决方法
-
java遍历properties文件操作指南