【JAVA Properties类概述】

一、概述。

之前说过,该对象是和IO流相结合的技术,所以和IO流结合在一起来讲比较合适。

public class Propertiesextends Hashtable<Object,Object>

该类的继承层次:

java.lang.Object

  |--java.util.Dictionnary<K,V>

    |--java.util.Hashtable<Object,Object>

      |--java.util.Properties

JDK1.6API对其描述:

Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。

一个属性列表可包含另一个属性列表作为它的“默认值”;如果未能在原有的属性列表中搜索到属性键,则搜索第二个属性列表。

简单来说,Properties类的特点是:

1.该集合中的键和值都是字符串类型。
2.集合中的数据可以保存到流中或者从流中获取数据。
3.通常该集合用于操作以键值对形式存在的配置文件。

二、常用方法。

0.构造方法。

Properties()
          创建一个无默认值的空属性列表。
Properties(Properties defaults)

创建一个带有指定默认值的空属性列表。

第一个方法无默认值,第二个方法则有一个参数,该参数是Properties类型的,实际上是将defaults中的键值对作为新创建的Properties对象的默认属性列表。但是,新创建的对象并不会改变原有defaults的内容(无论增删),这样可能就会出现一些怪现象。

 1 private static void propertiesDemo01() {
 2         Properties p=new Properties();
 3         p.setProperty("01", "zhangsan");
 4         p.setProperty("02", "lisi");
 5         p.setProperty("03", "wangwu");
 6         Properties pp=new Properties(p);
 7
 8         pp.remove("01");
 9         System.out.println(pp.getProperty("01"));
10         System.out.println(p.getProperty("01"));
11
12         p.remove("01");
13         System.out.println(p.getProperty("01"));
14         System.out.println(pp.getProperty("01"));
15     }

该段代码的执行结果是:

1 zhangsan
2 zhangsan
3 null
4 null

执行结果

可以看到,新建立的对象即使删除了defaults的键值对也仍然能够输出指定的信息,这是因为它的操作没有影响到defaults中的内容。但是查询则不一样,如果在当前属性列表中没有找到指定的键,则它会去默认属性列表中查找,如果没有才返回null。我们在这里可以发现,实际上defaults才是“幕后统治者”,新建立的对象无论增删改查都不会影响到它的内容,但是如果它自己增删改了某些内容,则会影响到新建立的对象。

1.添加、删除、修改、遍历、取值

【1】添加、删除、修改、取值

public String getProperty(String key)
用指定的键在此属性列表中搜索属性。如果在此属性列表中未找到该键,则接着递归检查默认属性列表及其默认值。如果未找到属性,则此方法返回 null。 
public String getProperty(String key, String defaultValue)
用指定的键在属性列表中搜索属性。如果在属性列表中未找到该键,则接着递归检查默认属性列表及其默认值。如果未找到属性,则此方法返回默认值变量。 
public Object setProperty(String key,String value)
调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
该方法既是添加键值对的方法,也是修改键值对的方法。 
public V remove(Object key)
从哈希表中移除该键及其相应的值。如果该键不在哈希表中,则此方法不执行任何操作。
注意:该方法是从父类继承而来的方法,Properties类本身不提供删除指定键值对的方法。

示例:

 1 private static void propertiesDemo01() {
 2         Properties p=new Properties();
 3         p.setProperty("01", "zhangsan");
 4         p.setProperty("02", "lisi");
 5         p.setProperty("03", "wangwu");
 6
 7         p.remove("01");
 8         p.list(System.out);
 9         System.out.println(p.getProperty("04"));
10         System.out.println(p.getProperty("04","赵六"));
11     }

【2】遍历

public Enumeration<?> propertyNames()
返回属性列表中所有键的枚举,如果在主属性列表中未找到同名的键,则包括默认属性列表中不同的键。
返回:
属性列表中所有键的枚举,包括默认属性列表中的键。 
public Set<String> stringPropertyNames()
返回此属性列表中的键集,其中该键及其对应值是字符串,如果在主属性列表中未找到同名的键,则还包括默认属性列表中不同的键。其键或值不是 String 类型的属性被忽略。

返回的 set 不受 Properties 对象支持。对此 Properties 的改变不能在该 set 中反映出来,反之亦然。

返回:
此属性列表中的键集,其中该键及其对应值是字符串,包括默认属性列表中的键。
从以下版本开始:
1.6 

上面两个方法中,第一个方法是不常用的方法,因为该方法的返回值是枚举类型的,而枚举类型现在已经不推荐使用了。所以最常使用的方法就是第二种方法了。

时间: 2024-10-12 21:52:02

【JAVA Properties类概述】的相关文章

java properties类读取配置文件

1.JAVA Properties类,在java.util包里,具体类是java.util.properties.Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集.不过Properties有特殊的地方,就是它的键和值都是字符串类型.2.properties类是集合类,里面要填充keyvalue键值对.将.properties文件里的信息加载到properties对象中.3.将.properties文件里的信息加载到properties对象

读配置文件可以保持顺序的 Java Properties 类

序 前几天,公司项目中有一个需求是读取配置文件的,而且最好能够保证加载到内存中的顺序能够和配置文件中的顺序一致,但是,如果使用 jdk 中提供的 Properties 类的话,读取配置文件后,加载到内存中的顺序是随机的,不能保证和原文件的顺序一致,因此,jdk 提供的 Properties 是不行的. 背景 由于有这样的需求,而 Java 的 Properties 类又不能实现,因此只能想别的办法.我曾经想过,在把配置文件加载到内存后,对其进行排序,但这个方案会有很多限制,而且也有问题.配置文件

java -&gt;properties类

Properties类介绍 Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载.属性列表中每个键及其对应值都是一个字符串. 特点: 1.Hashtable的子类,map集合中的方法都可以用. 2.该集合没有泛型.键值都是字符串. 3.它是一个可以持久化的属性集.键值可以存储到集合中,也可以存储到持久化的设备(硬盘.U盘.光盘)上.键值的来源也可以是持久化的设备. 4.有和流技术相结合的方法. l  load(InputStream)  把指定流所对应的

Java的Properties类和读取.properties文件

一..properties文件的作用 Properties属性文件在JAVA应用程序中是经常可以看得见的,也是特别重要的一类文件.它用来配置应用程序的一些信息,不过这些信息一般都是比较少的数据,没有必要使用数据库文件来保存,而使用一般的文本文件来保存,如果是通过File直接保存的话,可能在存储和读取上都不是很方便,但如果保存为Properties文件就不一样了,属性文件都有键值对应的,在JAVA的包中,有提供专门的操作属性文件的类.这个类就是 java.uitl.Properties类,由于Pr

Properties类使用详解

Java Properties类使用详解 概述 Properties 继承于 Hashtable.表示一个持久的属性集,属性列表以key-value的形式存在,key和value都是字符串. Properties 类被许多Java类使用.例如,在获取环境变量时它就作为System.getProperties()方法的返回值. 我们在很多需要避免硬编码的应用场景下需要使用properties文件来加载程序需要的配置信息,比如JDBC.MyBatis框架等.Properties类则是properti

java properties

一.Java Properties类 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支 持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量设置.像Python支持的配置文件 是.ini文件,同样,它也有自己读取配置文件的类ConfigParse,方便程序员或用户通过该类的方法来修改.ini配置文件.在Java中,其配 置文件常为.propert

Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)

第一讲     File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作 3)File类的实例是不可变的:也就是说,一旦创建,File 对象表示的抽象路径名将永不改变 4)File对象可以作为参数传递给流的构造函数 二.File对象创建 方式一: File f =new File("a.txt"); 将a.txt封装成File对象.可以将已有的和未出现的文件或者文件夹封装成对象. 方式

黑马程序员——Java基础——IO流(二)——File类、Properties类、打印流、序列流

第一件 File类 一.File类 a.用于将文件或者文件夹封装成对象 b.方便对文件与文件夹的属性信息进行操作 c.File对象可以作为参数传递给流的构造函数 d.了解File类中的常用方法 二.File对象的创建 a.File f=new File("a:\\a.txt"): b.File f2=new File("C:\\abc","a.txt");//分开的好处是后一个参数能够使用其他对象如string c.File d=new File

黑马程序员——Java基础---IO(三)--File类、Properties类、打印流、序列流(合并流)

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作,因此是对流操作的一种补充 3)File类的实例是不可变的:也就是说,一旦创建,