属性类:Properties

属性是程序中经常出现的形式。

在类集中提供了一种专门的Properties类。

public class Propertiesextends Hashtable<Object,Object>

Properties是HashTable子类,那么肯定也是Map子类。可以使用Map的全部操作。

但是一般情况下是单独使用的。

设置和取得属性

设置属性。

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

得到属性:

找到了返回值,没找到返回null。

 String getProperty(String key)    用指定的键在此属性列表中搜索属性。 

和  找到了返回值,没找到返回defaultValue默认值。

 String getProperty(String key, String defaultValue)    用指定的键在属性列表中搜索属性。 

验证以上操作方法:

package 类集;
import java.util.Properties;
public class test1{
    public static void main(String args[]){
        Properties pro = new Properties() ;    // 创建Properties对象
        pro.setProperty("BJ","BeiJing") ;    // 设置属性
        pro.setProperty("TJ","TianJin") ;
        pro.setProperty("NJ","NanJing") ;
        System.out.println("1、BJ属性存在:" + pro.getProperty("BJ")) ;
        System.out.println("2、SC属性不存在:" + pro.getProperty("SC")) ;
        System.out.println("3、SC属性不存在,同时设置显示的默认值:" + pro.getProperty("SC","没有发现")) ;  //没找到返回默认值
    }
};

结果:

1、BJ属性存在:BeiJing
2、SC属性不存在:null
3、SC属性不存在,同时设置显示的默认值:没有发现

将以上属性写入普通文件中,字节流操作。

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

代码:

package 类集;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
public class test1{
    public static void main(String args[]){
        Properties pro = new Properties() ;    // 创建Properties对象
        pro.setProperty("BJ","BeiJing") ;    // 设置属性
        pro.setProperty("TJ","TianJin") ;
        pro.setProperty("NJ","NanJing") ;
        File file = new File("D:" + File.separator + "area.properteis") ;    // 指定要操作的文件
        try{
            pro.store(new FileOutputStream(file),"Area Info") ;    // 保存属性到普通文件
        }catch(FileNotFoundException e){  //异常处理。
            e.printStackTrace() ;
        }catch(IOException e){
            e.printStackTrace() ;
        }
    }
};

结果:

要注意要有文件的异常处理

既然可以保存到普通文件中,那么可以读取文件。

 void load(InputStream inStream)    从输入流中读取属性列表(键和元素对)。 

读取文件中属性内容的代码:

package 类集;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
public class test1{
    public static void main(String args[]){
        Properties pro = new Properties() ;    // 创建Properties对象
        File file = new File("D:" + File.separator + "area.properteis") ;    // 指定要操作的文件
        try{
            pro.load(new FileInputStream(file)) ;    // 读取属性文件
        }catch(FileNotFoundException e){
            e.printStackTrace() ;
        }catch(IOException e){
            e.printStackTrace() ;
        }
        System.out.println("1、BJ属性存在:" + pro.getProperty("BJ")) ;
        System.out.println("2、SH属性存在:" + pro.getProperty("SH")) ;
    }
};

输出结果:

1、BJ属性存在:BeiJing
2、SH属性存在:null

保存到XML文件中。

 void storeToXML(OutputStream os, String comment)   发出一个表示此表中包含的所有属性的 XML 文档。 

代码:

package 类集;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
public class test1{
    public static void main(String args[]){
        Properties pro = new Properties() ;    // 创建Properties对象
        pro.setProperty("BJ","BeiJing") ;    // 设置属性
        pro.setProperty("TJ","TianJin") ;
        pro.setProperty("NJ","NanJing") ;
        File file = new File("D:" + File.separator + "area.xml") ;    // 指定要操作的文件
        try{
            pro.storeToXML(new FileOutputStream(file),"Area Info") ;    // 保存属性到普通文件
        }catch(FileNotFoundException e){
            e.printStackTrace() ;
        }catch(IOException e){
            e.printStackTrace() ;
        }
    }
};

结果:

读取XML文件里的属性

 void loadFromXML(InputStream in)     将指定输入流中由 XML 文档所表示的所有属性加载到此属性表中。 

代码:

package 类集;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
public class test1{
    public static void main(String args[]){
        Properties pro = new Properties() ;    // 创建Properties对象
        File file = new File("D:" + File.separator + "area.xml") ;    // 指定要操作的文件
        try{
            pro.loadFromXML(new FileInputStream(file)) ;    // 读取属性文件
        }catch(FileNotFoundException e){
            e.printStackTrace() ;
        }catch(IOException e){
            e.printStackTrace() ;
        }
        System.out.println("1、BJ属性存在:" + pro.getProperty("BJ")) ;
    }
};

操作结果:

1、BJ属性存在:BeiJing

总结:

1,要想进一步了解属性,可以学习后续的反射机制。了解属性应用

2,属性里的类型肯定都是字符串。因为操作最方便。

3,属性可以向普通文件或者XML文件中保存或者读取,按照指定格式向文件中任意扩充属性。

时间: 2024-10-10 10:11:52

属性类:Properties的相关文章

Java属性类:Properties的常用方法

Properties类本身是Hashtable类的子类,也是按照key-value的形式存放数据的. 设置和取得属性: public class PropertiesDemo01{ public static void main(String args[]){ Properties pro = new Properties() ; // 创建Properties对象 pro.setProperty("BJ","BeiJing") ; // 设置属性 pro.setP

Java读写资源文件类Properties

Java中读写资源文件最重要的类是Properties 1) 资源文件要求如下: 1.properties文件是一个文本文件 2.properties文件的语法有两种,一种是注释,一种属性配置. 注    释:前面加上#号 属性配置:以“键=值”的方式书写一个属性的配置信息. 3.properties文件的一个属性配置信息值可以换行,但键不可以换行.值换行用“\”表示. 4.properties的属性配置键值前后的空格在解析时候会被忽略. 5.properties文件可以只有键而没有值.也可以仅

springboot属性类自动加载配置文件中的值

springboot属性类自动加载配置文件中的值,如Person类加载在yml中配置的name,age等属性值,可以通过如下步骤获取: 类上添加@ConfigurationProperties注解,prefix为yml中配置的属性名称,要想属性类生效得加上@Component注解 如果想要在yml中有对应类的提示,还需要添加如下依赖: yml书写如下: 如果是properties文件,则书写如下: 在yml中如果值中有特殊字符,需要转义可以用单引号包裹,默认是双引号 如果仅仅为类中的某个属性值赋

spring 加载属性(properties)文件

在开发的过程中,配置文件往往就是那些属性(properties)文件,比如使用properties文件配置数据库文件,又如database-config.properties 代码清单:database-config.properties jdbc.database.driver=com.mysql.cj.jdbc.Driver jdbc.database.url=jdbc:mysql://localhost:3306/springmvc?useSSL=false&serverTimezone=

波哥学JAVA,定义类 创建对象 实例化对象 属性 类调用属性或者方法

定义类 声明对象  创建对象 实例化对象 属性 对象调用属性或者方法 举例,下面定义类了一个类并声明属性,写了一个方法: 创建对象 实例化对象 属性 类调用属性或者方法

从零开始学Java之IO字符流懒人模式(自动生成属性类,方法类,界面类)

平时做一个项目都要建很多的属性类,方法类和View类,学了IO流之后想了一种办法,就是自己写一串代码,然后在文本文档里写class <类名>加上所有的属性,然后运行一下代码就自动生成了一个  <类名>.java   文件.用myeclipse打开就可以了.同样的道理,你写一个只有   class <类名> 的txt文本文档  点一下另一段代码就自动生成了一个方法类,里面带有增删改查四个简单方法的方法类,还有一个View类. 首先说一下,生成属性类的这段代码: packa

Swift-存储属性,计算属性,类属性

//类的属性定义 class Student: NSObject { // 定义属性 // 定义存储属性 var age : Int = 0 var name :String? var mathScore : Double = 0.0 var chineseScore :Double = 0.0 // 定义一个方法,可以是返回平均成绩 (注意: swift不建议这样使用,应该定义一个计算属性) func getAverageScore() -> Double { // 在swift如果是使用当前

依赖属性(Dependency Properties)

1.依赖属性提供的属性功能(续) 1) 元数据重写 通过定义其 PropertyMetadata,类可以定义依赖项属性的行为,例如,其默认值和属性系统回调. 很多依赖项属性类都已经将默认元数据作为其注册过程的一部分而创建. 这包含作为 WPF API 一部分的依赖项属性. 通过其类继承继承依赖项属性的类可以重写原始的元数据,以便可以通过元数据更改的属性的特征将与任何特定于子类的要求匹配. 在依赖项属性上重写元数据的操作必须在将该属性提供给属性系统使用之前进行,也就是说,在对注册属性的对象的特定实

C++ 属性类

又一次向目标迈进了... 这次是实现一个物体所拥有的属性类.没什么好说的,非常简单. 因为我是C++新手,不知道对这次的实现有没有什么更好的实现方式.因为这个类对以后的进展很重要,而且,要充分考虑易用性,安全性,以及扩展性-- emmmmmmm................ Quality.h #include "stdinc.h" #include "Random.h" #include "Rational.h" #pragma once n