5.8 Properties
2018-10-19 06:31:03来源:博客园 阅读 ()
一、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文件夹下。
没有使用绝对路径的话,前端默认加上当前工程路径。
这就是相对这个工程而言的相对路径。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:java 同步
- Spring boot Sample 003之spring-boot-configuration-proper 2020-06-01
- Java连载116-IO与Properties联合应用 2020-05-19
- Java怎么从这四个位置读取配置文件Properties(普通文件系统 2020-05-09
- 细数Java项目中用过的配置文件(properties篇) 2020-04-12
- @configurationProperties注解时 idea弹出 Spring Boot Anno 2020-03-31
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash