Java API 之 Properties 类
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 类的更多相关文章
- Java学习:Properties类
Java学习:Properties类 学习目标 认识properties文件,理解其含义,会正确创建properties文件. 会使用java.util.Properties类来操作propertie ...
- Java中的Properties类
目录 Java中的Properties类 前言 主要方法 读取Properties文件 相关实例 Java中的Properties类 前言 Java中的Properties类属于配置文件,以键值对的方 ...
- 6.算法竞赛中的常用JAVA API :Math类(转载)
6.算法竞赛中的常用JAVA API :Math类 求最值 最小值 Math.min(int a, int b) Math.min(float a, float b) Math.min(double ...
- 算法竞赛中的常用JAVA API :大数类(转载)
5.算法竞赛中的常用JAVA API :大数类 摘要 java中的基础数据类型能存储的最大的二进制数是 2 ^ 63 - 1 对应的十进制数是9223372036854775807(long类型的最大 ...
- Java读写配置文件——Properties类的简要使用笔记
任何编程语言都有自己的读写配置文件的方法和格式,Java也不例外. 在Java编程语言中读写资源文件最重要的类是Properties,功能大致如下: 1. 读写Properties文件 2. 读写XM ...
- java编程中Properties类的具体作用和使用
如果不熟悉 java.util.Properties类,那么现在告诉您它是用来在一个文件中存储键-值对的,其中键和值是用等号分隔的.(如清单 1 所示).最近更新的java.util.Properti ...
- java 21 - 14 Properties类
类 Properties Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载.属性列表中每个键及其对应值都是一个字符串. 注意:Properties是Has ...
- java编程中Properties类的具体作用和使用!
如果不熟悉 java.util.Properties类,那么现在告诉您它是用来在一个文件中存储键-值对的,其中键和值是用等号分隔的.(如清单 1 所示).最近更新的java.util.Properti ...
- day1 java基础回顾- Properties类与配置文件
Properties配置文件说明 Properties类对应.properties文件.文件内容是键值对,键值对之间使用"="或空格隔开.开头是"#"的表示注释 ...
随机推荐
- const 与define 创建符号常量的 用法与区别
一.define 的用法: 在c语言中我经常会看到 :#define PI 12 ,这是创建了一个符号常量,这里面要注意没有那个等于号“=”: 二.const 的用法: 1.const 也可以来创 ...
- “全栈2019”Java第二十七章:流程控制语句中循环语句for
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- ios 相机 自定义 相片的截取
前段时间公司需要做一个身份识别的功能,而系统相机无法满足要求,so自己自定义了. 上代码: .h文件 #import <UIKit/UIKit.h> #import <AVFound ...
- chromium 安裝 flash
CentOS yum install chromium-pepper-flash Debian apt-get install chromium-pepper-flash archlinux pacm ...
- Orleans MultiClient 多个Silo复合客户端
目录 介绍 使用 简单例子 配置 注入到 DI 容器 添加多个 Client 全局 Orleans 服务配置 介绍 Orleans.MultiClient 是一个 Orleans 复合客户端,只需要简 ...
- HTML-★★★格式与布局fixed/absolute/relative/z-index/float★★★
很多网页都存在一个悬浮的操作条或者广告区,无论如何上下滚动网页,操作条或广告区都不会动,这个就是div制作,位置锁定在屏幕指定位置,现在我们就学习下网页的格式与布局. position 位置,来给di ...
- Angular material mat-icon 资源参考_Images
ul,li>ol { margin-bottom: 0 } dt { font-weight: 700 } dd { margin: 0 1.5em 1.5em } img { height: ...
- ONTAK2010 Peaks加强版(离线&在线)
题面 弱化版:luogu 强制在线版:bzoj 题解 本题有两种解法 离线算法:线段树合并 先看一道简单题[USACO18JAN]MooTube 本题就是在此基础上求第\(k\)高的点 首先把询问和路 ...
- C#只启动一个进程的代码
把写内容过程中经常用到的内容做个收藏,如下的内容是关于C#只启动一个进程的内容.public partial class App : Application { protected override ...
- 初学 spring
1.spring 开发环境,包含eclipse https://spring.io/tools3/sts/all/