Properties集合

java.util.Properties集合extends Hashtable<k,v>implements Map<k,v>
Properties类表示了一个持久的属性集。Properties可保存在流中或者从流中加载。
Properties集合是唯一和IO流相结合的集合。

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

  • 可以使用Properties集合中的方法load,把硬盘中保存的文件(键值对),读取到集合中使用。
    void load(InputStream inStream)
    void load(Reader reader )
    参数
    InputStream inStream——字节输入流,不能读取含有中文的键值对。
    Reader reader——————字符输入流,能读取含有中文的键值对。
    使用步骤
    1.创建Properties集合对象。
    2.使用Properties集合对象中的方法load读取保存键值对的文件。
    3.遍历Properties集合
    注意
    1.存储键值对的文件中,健与值默认的连接符号可以使用=,空格(其他符号)。
    2.存储键值对的文件中,可以使用#进行注释,被注释的键值对不会再被读取。
    3.存储键值对的文件中,健与值默认都是字符串,不用再加引号。
    属性值列表中每个间及其对应值都是一个字符串。
    Properties集合是一个双列集合,key和value默认都是字符串。
    Properties集合中有一些操作字符串的特有方法。

  • Object setProperty(String key,String value)——调用Hashtable的方法put。

  • String getProperty(String key)———————通过key找到value值,此方法相当于Map集合中的get(key)方法。

  • set<String>StringPropertyNames()—————放回此属性列表中的键集,其中该键及其对应值是字符串,此方法相当于Map集合中的keyset方法。
    可以使用Properties集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存储。

  • void store(OutputStream out,String comments)

  • void store(Writer writer,String comments)
    参数
    OutputStream out——字节输出流,不可以写中文
    Writer writer————字符输出流,可以写中文
    String comments——注释,用来解释说明保存的文件是做什么用的。
    不能使用中文,会产生乱码,默认是Unicode编码
    一般使用“空字符串”
    使用步骤
    1.创建Properties集合对象,添加数据。
    2.创建字节输出流/字符输出流,构造方法中绑定要输出的目的地。
    3.使用Properties集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存储。
    4.释放资源。

### Properties 集合的线程安全性 `Properties` 是 Java 中用于处理键值对的一种集合类,通常用于读取配置文件或系统属性。它继承自 `Hashtable`,并且继承了 `Hashtable` 的线程安全性。 `Properties` 是线程安全的集合类之一,其线程安全性来源于其父类 `Hashtable`。`Hashtable` 的所有方法都是同步的(`synchronized`),这意味着在多线程环境中,多个线程可以安全地访问 `Properties` 实例,而不会导致数据不一致或并发修改异常。因此,`Properties` 适用于需要并发读写配置信息的场景[^1]。 以下是一个简单的 `Properties` 使用示例: ```java import java.util.Properties; public class PropertiesTest { public static void main(String[] args) { Properties properties = new Properties(); properties.setProperty("url", "jdbc:mysql://localhost:3306/newstudy"); properties.setProperty("driver", "com.mysql.jdbc.Driver"); properties.setProperty("username", "root"); properties.setProperty("password", "123"); String url = properties.getProperty("url"); String driver = properties.getProperty("driver"); String username = properties.getProperty("username", "root"); String password = properties.getProperty("password"); System.out.println(url); System.out.println(driver); System.out.println(username); System.out.println(password); } } ``` 由于 `Properties` 的线程安全性,上述代码在多线程环境下可以安全地读写属性值,而无需额外的同步机制。然而,需要注意的是,虽然 `Properties` 是线程安全的,但其子类或扩展类可能不具备相同的线程安全性,因此在自定义扩展时需要特别注意并发控制。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值