1、简介

在项目中我们经常看到一种格式极其干净的配置文件,如:config.properties。在Java的体系结构中也提供了API对properties文件进行读取和写入等操作,即:Properties类。


2、入门DEMO

在cn.lay.properties包下建立类Properties.java和config.properties文件,如下:

Properties.java

package cn.lay.properties;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties; public class PropertiesDemo {
public static void main(String[] args) throws IOException {
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("cn/lay/properties/config.properties");
Properties config = new Properties();
config.load(inputStream);
String userName = config.getProperty("username");
System.out.println("username=" + userName);
}
}

config.properties

username=lay

运行main方法,输出:

username=lay

main方法中,通过输入流读取了config.properties。Properties实例对象从流中读取文件属性,并提供getProperty(key)方法读取属性。


3、类Properties

类Properties存在于java.util包下

继承结构如:

java.lang.Object

  |_ java.uil.Dictionary<K,V>

    |_ java.util.Hashtable<Object,Object>

      |_ java.util.Properties

已实现的主要接口:

Serializable, Cloneable, Map<Object, Object>

直接子类:

Provider

Properties直接继承自Hashtable那么它的数据结构也和Hashtable一样属于键值对形式如:username="lay",不过不同的是,Properties的键和值都是String类型。所以,虽然Properties继承了Hashtable后可以使用put和putAll方法,但是不被建议使用。因为这两个方法允许插入非String类型。

字段摘要:

protected Properties defaults; 默认属性列表

构造函数:

1) Properties();

2) Properties(Properties defaults); 可以初始化默认属性列表


4、加载properties资源文件

Properties类重载了两个方法用于读取属性列表,也就是加载资源为实例对象:

1) void load(InputStream inputStream);

InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("cn/lay/properties/config.properties");
Properties config = new Properties();
config.load(inputStream);

2) void load(Reader reader);

InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("cn/lay/properties/config.properties");
Reader reader = new InputStreamReader(inputStream, "utf-8");
Properties config = new Properties();
config.load(reader);

5、读取属性值

1)String getProperty(String key);

String userName = config.getProperty("username");

2) String getProperty(String key, String defaultValue);

String userName = config.getProperty("username", "nobody");

6、设置属性值

config.setProperty("username", "marry");

7、存储为properties资源文件

写数据的方法分为两种,list和store

1)list 此方法通常用于调试,System.out即可以获取PrintStream,从而输出到控制台

void list(PrintStream out);

PrintStream printStream = new PrintStream("/Users/lay-mac/Desktop/config.properties");
config.list(printStream);

void list(PrintWriter writer);

PrintWriter printWriter = new PrintWriter(outputStream);
config.list(printWriter);

2) store

void store(OutputStream out, String comments);

OutputStream outputStream = new FileOutputStream("/Users/lay-mac/Desktop/config.properties");
config.store(outputStream, "test store");

void store(Writer writer, String comments);

Writer writer = new FileWriter("/Users/lay-mac/Desktop/config.properties");
config.store(writer, "test store");

8、遍历属性列表

Set<String> stringPropertyNames(); 返回属性列表键的set集合,包括默认列表;

Set<String> keySet = config.stringPropertyNames();
for (String key : keySet) {
System.out.println("key=" + key);
System.out.println("value=" + config.getProperty(key));
}

Enumeration<?> propertyNames();返回属性列表中所有键的枚举,包括默认列表;

Enumeration<String> enumeration = (Enumeration<String>) config.propertyNames();
while (enumeration.hasMoreElements()) {
String key = (String) enumeration.nextElement();
System.out.println("key=" + key);
System.out.println("value=" + config.getProperty(key));
}

除了读取写入.properties文件外,Properties类还可以读取和写入xml文件形式,具体请参考:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh

Java API 之 Properties 类的更多相关文章

  1. Java学习:Properties类

    Java学习:Properties类 学习目标 认识properties文件,理解其含义,会正确创建properties文件. 会使用java.util.Properties类来操作propertie ...

  2. Java中的Properties类

    目录 Java中的Properties类 前言 主要方法 读取Properties文件 相关实例 Java中的Properties类 前言 Java中的Properties类属于配置文件,以键值对的方 ...

  3. 6.算法竞赛中的常用JAVA API :Math类(转载)

    6.算法竞赛中的常用JAVA API :Math类 求最值 最小值 Math.min(int a, int b) Math.min(float a, float b) Math.min(double ...

  4. 算法竞赛中的常用JAVA API :大数类(转载)

    5.算法竞赛中的常用JAVA API :大数类 摘要 java中的基础数据类型能存储的最大的二进制数是 2 ^ 63 - 1 对应的十进制数是9223372036854775807(long类型的最大 ...

  5. Java读写配置文件——Properties类的简要使用笔记

    任何编程语言都有自己的读写配置文件的方法和格式,Java也不例外. 在Java编程语言中读写资源文件最重要的类是Properties,功能大致如下: 1. 读写Properties文件 2. 读写XM ...

  6. java编程中Properties类的具体作用和使用

    如果不熟悉 java.util.Properties类,那么现在告诉您它是用来在一个文件中存储键-值对的,其中键和值是用等号分隔的.(如清单 1 所示).最近更新的java.util.Properti ...

  7. java 21 - 14 Properties类

    类 Properties Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载.属性列表中每个键及其对应值都是一个字符串. 注意:Properties是Has ...

  8. java编程中Properties类的具体作用和使用!

    如果不熟悉 java.util.Properties类,那么现在告诉您它是用来在一个文件中存储键-值对的,其中键和值是用等号分隔的.(如清单 1 所示).最近更新的java.util.Properti ...

  9. day1 java基础回顾- Properties类与配置文件

    Properties配置文件说明 Properties类对应.properties文件.文件内容是键值对,键值对之间使用"="或空格隔开.开头是"#"的表示注释 ...

随机推荐

  1. Linux系统管理 常用命令

    基础常用命令 某个命令 --h,对这个命令进行解释 某个命令 --help,解释这个命令(更详细) man某个命令,文档式解释这个命令(更更详细)(执行该命令后,还可以按/+关键字进行查询结果的搜索) ...

  2. “全栈2019”Java第五十九章:抽象类与抽象方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  3. BeginEditorCommand的原理

    代码来源 :http://www.arch-pub.com/problem-about-CPropertyPage_10682271.html CWnd* pAcadWnd = CWnd::FromH ...

  4. dbproxy-main函数

    main主函数 /home/id/lua.lua/home/id/lua-c/lua.lua/home/id/lua-c/metatable.lua/home/id/lua-c/1.lua int m ...

  5. javascript canvas画订单

    前段时间看了某个平台的后台,发现订单显示使用的canvas进行绘画(插件echarts),直观,明了的表达出了订单的走势如下 所以自己心痒痒的,就自己模仿了一个-->贴上代码 <style ...

  6. 数组其他部分及java常见排序

    数据结构的基本概述: 数据结构是讲什么,其实大概就分为两点: 1.数据与数据之间的逻辑关系:集合.一对一.一对多.多对多 2.数据的存储结构: 一对一的:线性表:顺序表(比如:数组).链表.栈(先进后 ...

  7. Python之人工智能(一)

    是不是看到标题感觉很高大上?其实就是人工智障啦hhh~,本篇文档是典型的标题党,虽然是人工智能,但是没有算法,只是站在巨人的肩膀上而已. 好了,步入正题.此篇是人工智能应用的重点,只用现成的技术不做底 ...

  8. J: Just for fun

    J: Just for fun 时间限制: 1 s      内存限制: 128 MB        题目描述 最近carryon在准备考研复习高数,复习到微分学的时候看到一个求曲面某点的切平面的问题 ...

  9. FlutterToast 使用

    参看 FlutterToast 开源库 https://github.com/PonnamKarthik/FlutterToast

  10. Java Web基础——Controller+Service +Dao三层的功能划分

    转自:https://www.cnblogs.com/cielosun/articles/5752272.html 1. Controller/Service/DAO简介: Controller是管理 ...