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 Properties的更多相关文章
- spring无法读取properties文件数据
只讲述异常点,关于怎么配置文件,这里不做说明. 1. controller中无法读取config.properties文件 controller中注入的@Value配置是从servlet-cont ...
- Android local.properties 文件读取
转载请标明出处:http://www.cnblogs.com/zhaoyanjun/p/6202369.html 本文出自[赵彦军的博客] 在Android Studio项目里面有个local.pro ...
- Crystal Clear Applied: The Seven Properties of Running an Agile Project (转载)
作者Alistair Cockburn, Crystal Clear的7个成功要素,写得挺好. 敏捷方法的关注点,大家可以参考,太激动所以转载了. 原文:http://www.informit.com ...
- hibernate-mapping-3.0.dtd;hibernate-configuration-3.0.dtd;hibernate.properties所在路径
hibernate-mapping-3.0.dtd 所在路径:hibernate-release-5.2.5.Final\project\hibernate-core\src\main\resourc ...
- Properties操作指南
一.简介: Properties是java中用的比较多的一个类,表示一个持久的属性集.继承于Hashtable,Properties可从流中加载,也可保存在流中.属性列表中每个键极其对应值共同组成一个 ...
- Titanium.App.Properties 对象
Titanium.App.Properties是用来管理键值对数据的一个很方便的对象.在保存数据的时候,在Ti.App.Properties.setString相对应的Key的值中设置你要保存的值即可 ...
- Android中使用java.util.Properties犯的错
今天尝试使用java.util.Properties来保存应用配置,然而遇到了好几个问题,对于熟悉此内容的来说可能都是猪一样的错误,但难免有像我一样的新手再次遇到,希望此文能有所帮助. 错误1 jav ...
- solr定时更新索引遇到的问题(SolrDataImportProperties Error loading DataImportScheduler properties java.lang.NullPointerException)
问题描述 报如下错误,很显然,问题原因:空指针异常: ERROR (localhost-startStop-1) [ ] o.a.s.h.d.s.SolrDataImportProperties ...
- 读取properties配置文件的方法
一般在.properties文件中配置数据库连接的相关信息,我们需要从中读取信息,以便建立与数据库的连接. 文件目录: application.properties配置信息: url=jdbc:ora ...
- JavaSe:Properties文件格式
Properties文件格式说明 Properties继承自Hashtable,是由一组key-value的集合. 在Java中,常用properties文件作为配置文件.它的格式是什么样的呢? 下图 ...
随机推荐
- codeforces 1065D
题目链接:https://codeforces.com/problemset/problem/1065/D 题意:给你一个又1~n^2组成的n行n列的矩阵,你可以走日字型,直线,斜线,现在要求你从1走 ...
- HDU 多校对抗赛 A Maximum Multiple
Maximum Multiple Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- idea中如何配置git以及在idea中初始化git
idea中如何配置git以及在idea中初始化git呢: 参考此博文: http://blog.csdn.net/qq_28867949/article/details/73012300 *为了这个问 ...
- sql异常-The used SELECT statements have a different number of columns
两个或多个select查询进行union时,查询的列不对应.两个select进行union时,两个select的查询出的列必须相对应.
- 通过js修改微信内置浏览器title
document.setTitle = function(t) { document.title = t; var i = document.createElement('iframe'); i.sr ...
- javascript错误处理(转)
1.onerror事件处理函数onerror事件处理函数是第一个用来协助javascript处理错误的机制.页面上出现异常时,error事件便在window对象上触发.例如: <html> ...
- java中的构造块、静态块等说明
一:这篇博客写的时候我在学校已经一个星期了,为什么又会想到写这le,因为这几天又在重新学下有关spring.myBatis的知识,其中在实例化sessionFactory的时候用到了静态块,虽然在学习 ...
- bzoj2453/2120 数颜色
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2120 http://www.lydsy.com/JudgeOnline/problem.ph ...
- 【洛谷 P3834】 可持久化线段树1(主席树)
题目链接 主席树=可持久化权值线段树. 如果你不会可持久化线段树,请右转 如果你不会权值线段树,请自行脑补,就是线段树维护值域里有多少个数出现. 可持久化线段树是支持查询历史版本的. 我们对每个数都进 ...
- hashlib模块加密用法
hashlib 加密模块 hashlib.md5() 构建一个md5的对象,用于调用对象的update方法去加密 例子: import hashlib hash = hashlib.md5() h ...