网站首页 > 精选教程 正文
Java知识点整理正在进行中,关注我,持续给您带来简单,实用的Java编程技巧。
Properties类
1. Properties类的介绍
在Java中提供了 java.util.Properties 类,来读取 .properties 属性文件。在程序调用 Properties 类的 load() 方法时,系统把 .properties 属性文件的内容加载到内存中。因为 Properties 类继承了 Hashtable 类,Properties 类把“=”之间的内容,添加到Hashtable 对象的 key 值,并同时添加 key 值对应的 value 值,也就是“=”右侧的值。所有在编写 .properties 属性文件时一定要用“=”号把名称与值分隔开。
通过 .properties 属性文形式只能保存 String 类型信息。
Properties 类是线程安全的,多个线程可以共享一个Properties对象,而不需要外部同步。
Properties 类的构造方法
构造方法 | 说明 |
Properties() | 创建一个无默认值的空属性列表。 |
Properties(Properties defaults) | 创建一个带有指定默认值的空属性列表。 |
Properties类的常用方法
方法 | 说明 |
void load(InputStream inStream) | 从输入流中读取属性列表(键和元素对)。 |
String getProperty(String key) | 用指定的键在此属性列表中搜索属性。 |
String getProperty(String key, String defaultValue) | 用指定的键在属性列表中搜索属性。 |
void list(PrintStream out) | 将属性列表输出到指定的输出流。 |
void list(PrintWriter out) | 将属性列表输出到指定的输出流。 |
void loadFromXML(InputStream in) | 将指定输入流中由 XML 文档所表示的所有属性加载到此属性表中。 |
Enumeration<?> propertyNames() | 返回属性列表中所有键的枚举,如果在主属性列表中未找到同名的键,则包括默认属性列表中不同的键。 |
Object setProperty(String key, String value) | 调用 Hashtable 的方法 put。 |
void store(OutputStream out, String comments) | 以适合使用 load 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。 |
void storeToXML(OutputStream os, String comment) | 发出一个表示此表中包含的所有属性的 XML 文档。 |
void storeToXML(OutputStream os, String comment, String encoding) | 使用指定的编码发出一个表示此表中包含的所有属性的 XML 文档。 |
2. 示例:Properties类的使用
(1)在项目的默认路径(src目录)下创建 my.properties 属性文件(名称可以自定义,扩展名必须为 properties )。
name=Jack
gender=male
(2)编写读取 properties 属性文件,并输出属性值。
package com.bbzd.properties;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* 演示Properties类的使用
* 在Java中提供了 java.util.Properties 类,来读取 .properties 属性文件。在程序调用 Properties 类的 load() 方法时,
* 系统把 .properties 属性文件的内容加载到内存中。因为 Properties 类继承了 Hashtable 类,Properties 类把“=”之间的内容,
* 添加到Hashtable 对象的 key 值,并同时添加 key 值对应的 value 值,也就是“=”右侧的值。所有在编写 .properties 属性文件
* 时一定要用“=”号把名称与值分隔开。
* 通过 .properties 属性文形式只能保存 String 类型信息。
* Properties 类是线程安全的,多个线程可以共享一个Properties对象,而不需要外部同步。
* @date 2022/9/29 - 14:14
*/
public class PropertiesDemo {
public static void main(String[] args) {
//演示读取配置文件的用法
demo1();
//演示打印JVM参数的用法
demo2();
}
/**
* 演示读取配置文件的用法
*/
private static void demo1(){
// 创建Properties类对象
Properties properties=new Properties();
// 读取my.properties配置文件到输入流中
InputStream inputStream=PropertiesDemo.class.getResourceAsStream("/my.properties");
try {
// 从输入流中加载属性列表
properties.load(inputStream);
// 获取properties文件中的属性值
String name=properties.getProperty("name");
String gender=properties.getProperty("gender");
// 输出结果
System.out.println("name: "+name);
System.out.println("gender: "+gender);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 演示打印JVM参数的用法
*/
private static void demo2(){
Properties properties=System.getProperties();
properties.list(System.out);
}
}
(3)运行结果
name: Jack
gender: male
3. 总结
(1)读取 .properties 属性文件时,使用 Class 对象的 getResourceAsStream()方法,把指定的属性文件读入输入流中,并使用 Properties 类中的 load() 方法,从输入流中读取属性列表(键/值对)。
(2)在使用 Class 对象的 load() 方法加载 .properties 属性文件的输入流后,数据在内存中是以 Hashtable 的形式进行保存的。
(3)使用 Properties 类的 getProperty() 方法,通过 key 键读取出 value 值。
- 上一篇: JAVA获取字符串内的括号对(支持多层级)
- 下一篇: Mysql溯源-任意文件读取??
猜你喜欢
- 2024-11-22 阿里巴巴Java性能调优实战:Stream如何提高遍历集合效率?
- 2024-11-22 java实现二叉树的Node节点定义手撕8种遍历(一遍过)
- 2024-11-22 JAVA开发常用到的Map遍历
- 2024-11-22 java使用ByteBuffer并进行多文件合并和拆分
- 2024-11-22 JNI:本地代码调用Java代码
- 2024-11-22 Mysql溯源-任意文件读取??
- 2024-11-22 JAVA获取字符串内的括号对(支持多层级)
- 2024-11-22 Java遍历一个 List 有哪些方式?每种的实现原理以及哪种最高效?
- 2024-11-22 Java面试题之二叉树的三种遍历
- 2024-11-22 Java常用的五种循环遍历方式
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)