属性集合Properties

概述

java.util.Properties继承于Hashtable,来表示一个持久的属性集。Properties可以保存在流中或从流中加载。它使用键值结构存储数据,每个键及其对应值都是一个字符串(双列集合)。该类也被许多java类使用,比如获取系统属性时,System.getProperties方法就是返回一个Properties对象。

Hashtable是最早期的双列集合,但由于其单线程操作被Hashmap替代了,然而其子类Properties仍活跃着,因为是唯一和IO流相结合的集合。Properties类的出现简化了对属性持久化的操作。属性持久化又大大简化了建立高扩展性程序的过程。

简单理解:是一个可以持久化读写数据(键值对)的集合对象。

Properties类

构造方法

构造方法摘要
Properties()
          创建一个无默认值的空属性列表。
Properties(Properties defaults)
          创建一个带有指定默认值的空属性列表。

知识点连接:持久化作用是将程序数据在持久状态和瞬时状态间转换的机制。即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。

可以使用Properties集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存储。

 voidstore(OutputStream out, String comments)
          以适合使用 load(InputStream) 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。
 voidstore(Writer writer, String comments)
          以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符。

参数:OutputStream:字节输出流,不能写中文(英文字母(不分大小写)和数字以ASCII码存储在文件里都是占一个字节,中文占俩,但字节输出流一次读写一个字节,故无法写中文)

           Writer writer:字符输出流,可以写中文。

           String comments:注释,解释说明保存的文件是做什么用的。注意该注释不能使用中文,会产生乱码(因为其默认为Unicode编码,但系统默认编码是GBK),一般使用空字符串。

使用步骤:

1.创建Properties集合对象,添加数据。

2.创建字节/字符输出流对象,构造方法中绑定要输出的目的地

3.使用Properties集合对象的方法store,将集合中的数据,持久化写入到硬盘中存储。

4.释放资源

// 可以使用Properties集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存储。
// 创建Properties集合对象,添加数据。
Properties prop = new Properties();
// public  Object setProperty(String key,String value):保存一对属性。
prop.setProperty("赵丽颖","冯绍峰");
prop.setProperty("孙俪","邓超");
prop.setProperty("陶虹","徐峥");

// 创建字节/字符输出流对象,构造方法中绑定要输出的目的地
FileWriter fw = new FileWriter("D:\\a\\cc.txt");
// 使用Properties集合对象的方法store,将集合中的数据,持久化写入到硬盘中存储。
prop.store(fw,"save data");
// 释放资源
fw.close();

运行截图:

也可以使用Properties集合中的方法load,可以把硬盘中的文件(键值对),读取到集合中使用。

 voidload(InputStream inStream)
          从输入流中读取属性列表(键和元素对)。
 voidload(Reader reader)
          按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。

参数:InputStream:字节输入流,不能读取含有中文的键值对(英文字母(不分大小写)和数字以ASCII码存储在文件里都是占一个字节,中文占俩,但字节输出流一次读写一个字节,故无法写中文)

           Writer writer:字符输入流,能读取含有中文的键值对。

使用步骤:

1.创建Properties集合对象。

2.使用Properties集合对象中的方法load读取保存键值对的文件。

3.遍历Properties集合。

注意事项:

1.存储键值对的文件中,键与值默认的连接符号可以使用等于号、空格或其他符号。

2.存储键值对的文件中,可以使用#进行注释,被注释的键值对不会再被读取。

3.存储键值对的文件中,键与值默认都是字符串,不用再加引号。

// 创建Properties集合对象
Properties prop = new Properties();
// 使用Properties集合对象中的方法load读取保存键值对的文件。
prop.load(new FileReader("D:\\a\\cc.txt"));
// 获取所有键
Set<String> keySet = prop.stringPropertyNames();
for(String key : keySet){ // 遍历
    System.out.println("key:" + key + ",value:" + prop.getProperty(key));
}

基本的存储方法

public  Object setProperty(String key,String value):保存一对属性。(底层就是调用Hashtable的put方法)

public String getProperty(String key):使用此属性列表中指定的键搜索属性值。相当于Map集合中的的get(key)方法,但固定了参数类型为String

public Set<String> stringPropertyNames():所有键的名称的集合。相当于Map集合中的的keySet方法,但固定了参数类型为String

// 创建一个Properties对象,泛型默认字符串
Properties prop = new Properties();
// public  Object setProperty(String key,String value):保存一对属性。
prop.setProperty("赵丽颖","冯绍峰");
prop.setProperty("孙俪","邓超");
prop.setProperty("陶虹","徐峥");

// public Set<String> stringPropertyNames():所有键的名称的集合。
Set<String> keySet = prop.stringPropertyNames();
for(String key : keySet){ // 遍历输出key
    // public String getProperty(String key):使用此属性列表中指定的键搜索属性值。
    System.out.println("key:" + key + ",value:" + prop.getProperty(key));
}

运行截图:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值