一、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. jquery中:input和input的区别

    :input表示选择表单中的input,select,textarea,button元素, input仅仅选择input元素. <button>和<input type=" ...

  2. 数据结构之DFS与BFS

    深度搜索(DFS) and  广度搜索(BFS) 代码如下: #include "stdafx.h" #include<iostream> #include<st ...

  3. java web标签

    一:国庆结束了,回来上班,结果老大说过两天才出差,所以这两天就用来补自己不太懂的知识或者以前没有熟悉的知识,jsp的标签就是,因为在项目中自己封装了一些标签,但是我自己只是会用,真正的原理性的东西我还 ...

  4. Python基础(9)三元表达式、列表解析、生成器表达式

    一.三元表达式 三元运算,是对简单的条件语句的缩写.   # if条件语句 if x > f: print(x) else: print(y) # 条件成立左边,不成立右边 x if x > ...

  5. [BZOJ1036][ZJOI2008]树的统计Count 解题报告|树链剖分

    树链剖分 简单来说就是数据结构在树上的应用.常用的为线段树splay等.(可现在splay还不会敲囧) 重链剖分: 将树上的边分成轻链和重链. 重边为每个节点到它子树最大的儿子的边,其余为轻边. 设( ...

  6. 25个常规方法优化你的jquery代码

    原文发布时间为:2011-06-06 -- 来源于本人的百度文章 [由搬家工具导入] http://www.tvidesign.co.uk/blog/improve-your-jquery-25-ex ...

  7. BroadCastRecieve

    首先介绍一下BroadCastRecieve有几种: 1.无序广播(普通广播):sendBroadcast()方式 2.有序广播:sendOrderedBroadcast()方式 3.粘性广播:sen ...

  8. js判断浏览器是否为ie

    使用传统方式 if ((navigator.userAgent.indexOf('MSIE') >= 0) && (navigator.userAgent.indexOf('Op ...

  9. 存储过程 ----- navicat 创建存储过程

    以下为navicat 创建存储过程步骤图解: 1. 2. 3. 4. 在存储过程正文中是输入一行语句测试用,点击保存 5.输入存储过程名称,点击确定 6.到这来那么问题来了,会提示错误 7.切记存储过 ...

  10. [TJOI2007]segment

    题目描述 在一个 n*n 的平面上,在每一行中有一条线段,第 i 行的线段的左端点是(i, L(i)),右端点是(i, R(i)),其中 1 ≤ L(i) ≤ R(i) ≤ n. 你从(1, 1)点出 ...