java Properties类

简介: java Properties类

一、概述

1、介绍

Properties(Java.util.Properties)是Java中一个比较重要的类,主要用于读取Java的配置文件。各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量设置。在Java中,其配置文件常为.properties文件,格式为文本文件,文件的内容的格式是“键=值”或者“键 值”的格式,文本注释信息可以用"#"来注释。

       在做Java项目开发过程中,涉及到一些数据库服务连接配置、缓存服务器连接配置等,通常情况下我们会将这些不太变动的配置信息存储在以 .properties 结尾的配置文件中。当对应的服务器地址或者账号密码信息有所变动时,我们只需要修改一下配置文件中的信息即可。

       Properties是一个Map体系集合类,因为其继承于Hashtable,而Hashtable继承于Dictionary类,实现了Map接口,所以Properties也保留了其相关特性。

 

2、Properties特点:

(1)Properties是Hashtable<Object,Object>的子类;

(2)Properties类表示了一个可持久的属性集;

(3)Properties可以保存在流中或从流中加载;

(4)Properties中每个键和对应的值都是一个字符串(String类型);

(5)Properties有一个特殊的作用:专门用来加载xxx.properties配置文件。

二、Properties使用方法

1、Properties作为Map集合的使用

Properties作为Map集合使用时各种方法都与map集合一致(虽然可以但是不建议将Properties作为Map集合使用),但是有一点不同,就是在创建对象时不需要也不能给出泛型,否则会报错,默认所有的键值对类型都是Object类型

private static void PropertiesMap() {

   Properties pro = new Properties();//不需要加泛型,所有的键值都是object类型

   //存储元素

   pro.put(001, "张三");

   pro.put(002, "李四");

   pro.put(003, "王五");

   //遍历集合

   for(Object key : pro.keySet()) {

       System.out.println(key + ":" + pro.get(key));

   }

}

注意:不要使用Hashtable里面定义的方法添加键值对!因为它们可以插入不是String 类型的数据。如果一个Properties中含有非String的键值对,那么这样的Properties是“不安全”的。调用 store 或者 save 方法将失败。

2、Properties作为集合的特有方法

/**
 * Properties作为集合的特有方法
 *    0bject setProperty(String key,String value):设置类合的链和值,都是String类型,底层调用Hashtable方法put
 *    string getProperty ( String key):使用此属性列表中指定的性搜索属性
 *    Set<String> stringPropert yNames():从该属性列表中返回一个不可修改的键集,其中键及其对应的值是字符串
 */
private static void SpecialMethod() {
  Properties pro = new Properties();
  
  pro.setProperty("001", "张三");//键值都是String类型
  pro.setProperty("002", "李四");
  pro.setProperty("003", "王五");
    
  System.out.println(pro.getProperty("001"));//根据键搜索属性
  System.out.println(pro.getProperty("0011"));//没有时返回null
  
  System.out.println(pro);
  
  Set<String> s = pro.stringPropertyNames();//返回一个不可修改的键集,其中键及其对应的值是字符串
  System.out.println(s);
  for(String key : s) {
    System.out.println(key + ":" + pro.getProperty(key));
  }
}

3、Properties和IO流结合的方法

3.1、利用IO流将数据存入文件

//集合中数据保存到文件

   Properties pro = new Properties();

   

   pro.setProperty("001", "张三");//键值都是String类型

   pro.setProperty("002", "李四");

   pro.setProperty("003", "王五");

   

   System.out.println(pro);

   

   FileWriter fw = new FileWriter("Properties.txt");

   pro.store(fw,null);//不想添加描述信息就令第二个参数为null

   

   //数据保存为XML格式文件

   //storeToXML(OutputStream os, String comment, String encoding)使用指定的编码方式表示此表中包含的所有属性的XML文档

   FileOutputStream f1 = new FileOutputStream("PropertiesXML.XML");

   pro.storeToXML(f1, null);

Properties.txt

PropertiesXml.xml

3.2、利用IO流将文件数据加载到集合

//文件中数据加载到集合

Properties prop = new Properties();

   

FileReader fr = new FileReader("Properties.txt");

prop.load(fr);

   

//将此属性列表打印到指定的输出流。此方法对于调试很有用

prop.list(System.out);

//System.out.println(prop);

 

//从内容为XML格式的文件中读取数据加载为集合

FileInputStream f2 = new FileInputStream("PropertiesXML.XML");

prop.loadFromXML(f2);

 

prop.list(System.out);

//System.out.println(prop);

输出

注意:在写入很弱读取数据时,尽量每个Properties对象只对应一个输入或输出流,否则可能出现读取错误的情况,例如:读取txt文件和xml文件时使用同一个Properties对象时


相关文章
|
9月前
|
Java 编译器 API
Java 密封类:精细化控制继承关系
Java 密封类:精细化控制继承关系
453 83
|
7月前
|
安全 Java 数据建模
Java记录类:简化数据载体的新选择
Java记录类:简化数据载体的新选择
402 101
|
7月前
|
安全 Java 开发者
Java记录类:简化数据载体的新方式
Java记录类:简化数据载体的新方式
346 100
|
10月前
|
IDE Java 数据挖掘
Java 基础类从入门到精通实操指南
这份指南专注于**Java 17+**的新特性和基础类库的现代化用法,涵盖开发环境配置、数据类型增强(如文本块)、字符串与集合处理进阶、异常改进(如密封类)、IO操作及实战案例。通过具体代码示例,如CSV数据分析工具,帮助开发者掌握高效编程技巧。同时提供性能优化建议和常用第三方库推荐,适合从入门到精通的Java学习者。资源链接:[点此下载](https://pan.quark.cn/s/14fcf913bae6)。
471 37
|
8月前
|
安全 IDE Java
Java记录类型(Record):简化数据载体类
Java记录类型(Record):简化数据载体类
587 143
|
6月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
260 4
|
6月前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
313 5
|
6月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
392 5
|
6月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
312 1
|
6月前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
452 1
下一篇
开通oss服务