一、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的更多相关文章

  1. spring无法读取properties文件数据

    只讲述异常点,关于怎么配置文件,这里不做说明.   1. controller中无法读取config.properties文件 controller中注入的@Value配置是从servlet-cont ...

  2. Android local.properties 文件读取

    转载请标明出处:http://www.cnblogs.com/zhaoyanjun/p/6202369.html 本文出自[赵彦军的博客] 在Android Studio项目里面有个local.pro ...

  3. Crystal Clear Applied: The Seven Properties of Running an Agile Project (转载)

    作者Alistair Cockburn, Crystal Clear的7个成功要素,写得挺好. 敏捷方法的关注点,大家可以参考,太激动所以转载了. 原文:http://www.informit.com ...

  4. 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 ...

  5. Properties操作指南

    一.简介: Properties是java中用的比较多的一个类,表示一个持久的属性集.继承于Hashtable,Properties可从流中加载,也可保存在流中.属性列表中每个键极其对应值共同组成一个 ...

  6. Titanium.App.Properties 对象

    Titanium.App.Properties是用来管理键值对数据的一个很方便的对象.在保存数据的时候,在Ti.App.Properties.setString相对应的Key的值中设置你要保存的值即可 ...

  7. Android中使用java.util.Properties犯的错

    今天尝试使用java.util.Properties来保存应用配置,然而遇到了好几个问题,对于熟悉此内容的来说可能都是猪一样的错误,但难免有像我一样的新手再次遇到,希望此文能有所帮助. 错误1 jav ...

  8. solr定时更新索引遇到的问题(SolrDataImportProperties Error loading DataImportScheduler properties java.lang.NullPointerException)

    问题描述 报如下错误,很显然,问题原因:空指针异常: ERROR (localhost-startStop-1) [   ] o.a.s.h.d.s.SolrDataImportProperties ...

  9. 读取properties配置文件的方法

    一般在.properties文件中配置数据库连接的相关信息,我们需要从中读取信息,以便建立与数据库的连接. 文件目录: application.properties配置信息: url=jdbc:ora ...

  10. JavaSe:Properties文件格式

    Properties文件格式说明 Properties继承自Hashtable,是由一组key-value的集合. 在Java中,常用properties文件作为配置文件.它的格式是什么样的呢? 下图 ...

随机推荐

  1. json解析之jackson

    对于json格式的数据解析现在越来越多了,之前介绍了两种:fastjson和net.sf.json解析. 今天又有一个jackson解析.不过相对于之前两种,这种感觉稍微笨拙些.呵呵,还是了解下吧: ...

  2. PHP正则替换preg_replace函数的使用

    <?php $str="as2223adfsf0s4df0sdfsdf"; echo preg_replace("/0/","",$s ...

  3. AWS nat monitor and route switch script

    This script will monitor another NAT instance and take over its routes if communication with the oth ...

  4. Java之戳中痛点 - (4)i++ 和 ++i 探究原理

    先看一个例子: package com.test; public class AutoIncrement { public static void main(String[] args) { int ...

  5. exec,eval

    一.什么是Exec语句 假如我们一串字符串里面有Python代码,这个时候,普通情况是会把这串代码作为字符串来输出的,而不会执行这段代码.如果此时,我们想执行这串字符串里面的python代码,使用Ex ...

  6. Kuangbin 带你飞专题十一 网络流题解 及模版 及上下界网络流等问题

    首先是几份模版 最大流:虽然EK很慢但是优势就是短.求最小割的时候可以根据增广时的a数组来判断哪些边是割边.然而SAP的最大流版我只会套版,并不知道该如何找到这个割边.在尝试的时候发现了一些问题.所以 ...

  7. appium===元素定位

    一.常用识别元素的工具 uiautomator:Android SDK自带的一个工具,在tools目录下 monitor:Android SDK自带的一个工具,在tools目录下 Appium Ins ...

  8. Tomcat下载安装及常见问题解决办法

    一.Tomcat的下载: 下载地址:http://tomcat.apache.org/ 下载Tomcat6.0(在左侧的Download下,考虑到稳定性现在企业大部分还在用Tomcat6.0) (1) ...

  9. delphi.memory.分配及释放---New/Dispose, GetMem/FreeMem及其它函数的区别与相同,内存分配函数

    来自:http://www.cnblogs.com/qiusl/p/4028437.html?utm_source=tuicool&utm_medium=referral ---------- ...

  10. SPOJ - AMR11H

    Array Diversity Time Limit: 404MS   Memory Limit: 1572864KB   64bit IO Format: %lld & %llu Submi ...