Java Properties类

本文深入讲解Java中的Properties类,探讨其在配置文件管理中的应用,包括如何读取、修改及保存属性,同时介绍Properties类的主要方法及其特性。

Properties类是Java中操作配置文件的类, 属性映射(property map):是一种存储键/值对的数据结构。属性映射经常被用来存放配置信息
1、在Java中属性操作类是一个很重要的类,而要想明白属性操作类的作用,就必须先要清楚什么是属性文件,在属性文件中含有多个属性,每个属性就是直接用字符串表示出来的"key=value 键/值对", 而如果要想轻松操作这些属性需要使用Properties类完成
2、Properties class表示一个属性的持久化集合,Properties能够被保存到stream中,也能从stream中读出Properties, 每个key和与其相应的value都是一个字符串,properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式,在properties文件中,可以用"#“来作注释,properties文件在Java编程中用到的地方很多,操作很方便
3、 在Java中,其配置文件常为.properties文件,格式为文本文件,文件的内容的格式是“键=值”的格式,文本注释信息可以用”#"来注释
它有三个特性:
• 键和值都是字符串
• 键/值对可以很容易地写入文件或从文件读出。
• 用二级表存放默认值
它提供了几个主要的方法:
• getProperty ( String key),用指定的键在此属性列表中搜索属性。也就是通过参数 key ,得到 key 所对应的 value
• load ( InputStream inStream),从输入流中读取属性列表(键和元素对)。通过对指定的文件(比如说上面的 test.properties 文件)进行装载来获取该文件中的所有键 - 值对。以供 getProperty ( String key) 来搜索
• setProperty ( String key, String value) ,调用 Hashtable 的方法 put 。他通过调用基类的put方法来设置键 - 值对
• store ( OutputStream out, String comments),以适合使用 load 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。与 load 方法相反,该方法将键 - 值对写入到指定的文件中去。(注意这个是将字符串以注释的形式放入配置文本中)

public class PropertiesDemo {
	public static void main(String[] args) throws IOException {
		Properties properties = new Properties();

		// 加载配置文件
		// 1、字节流(输入)
		FileInputStream in = new FileInputStream("./src/test.properties");
		properties.load(in);
		// 2、字符流(输入) Reader
		Reader reader = new FileReader(new File("./src/test.properties"));
		properties.load(reader);
		reader.close();

		// 读取配置内容
		System.out.println("name:" + properties.getProperty("name"));
		// 指定默认值,当无法找到key时返回指定的默认值
		// 当 key不存在时,不指定默认值输出为null,指定默认值后输出默认值
		System.out
				.println("name1:" + properties.getProperty("name1", "233333"));
		
		// 设置配置的值
		// 当key存在时,修改值;key不存在时,添加
		properties.setProperty("name", "西米");
		properties.setProperty("height", String.valueOf(170));

		properties.remove("height");

		// 配置输出
		// 1.输出到控制台
		properties.list(System.out);
		// 2、输出到文件
		PrintStream outputStream = new PrintStream(new File(
				"./src/test.properties"));
		properties.store(outputStream, "这是注释");
	}
}

示例代码执行结果:
在这里插入图片描述
警告: 出于历史上的原因,Properties 类实现了 Map<Object,Object〉 。 因此, 可以使用 Map接口的 get 和 put 方法。不过,get 方法会返回类型 Object, 而 put 方法允许插入任何对 象。最好坚持使用 getProperty 和 setProperty 方法,这些方法会处理字符串,而不是对象
注释: 属性映射是没有层次结构的简单表。通常会用类似 window.main.color、window, main.title 等键名引入一个伪层次结构 Q 不过 Properties 类没有提供方法来组织这样一个 层次结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值