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对象时


相关文章
|
3月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
189 58
|
2月前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
3月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
91 8
|
3月前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
104 17
|
3月前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
3月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
155 4
|
3月前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
107 2
|
3月前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
100 4
|
3月前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
68 5
|
3月前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
161 5