开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情
前言
在日常的开发中,为了增加系统的灵活性和拓展性,我们会把一些经常变动的参数配置抽离出来,放在配置文件中,在项目启动时,灵活的选择需要加载的参数。常见的配置文件形式有Properties类、XML文件和YAML文件。下面我们将介绍一下Properties类,xml和yaml文件后续会陆续介绍的。
一、Properties类的概述
java.util.Properties,底层是一个Map结构,继承于HashTable ,主要用来表示一个持久的属性集。它使用键值结构存储数据,每个键及其对应值都是一个字符串。该类也被许多Java类使用,比如获取系统属性时,System.getProperties 方法就是返回一个Properties对象。 更多时候用于读取配置文件
二、Properties类构造方法
Properties(): 没有默认值的空属性列表。
三、Properties类基本存取功能方法
public Object setProperty(String key, String value):存一对属性,等价于map.put(key,value);public String getProperty(String key): 使用此属性列表中指定的键搜索属性值,等价于map.get(key);public Set<String> stringPropertyNames():所有键的名称的集合,等价于map.keySet();
public class Test {
public static void main(String[] args) {
// 创建Properties类的对象
Properties pp = new Properties();
// 存数据
pp.setProperty("driverClass", "com.mysql.jdbc.Driver");
pp.setProperty("url", "http://localhost:3306/day11_db");
pp.setProperty("username", "root");
pp.setProperty("password", "root");
// 取数据(所有的key)
Set<String> set = pp.stringPropertyNames();
// 非空判断
if (!set.isEmpty()) {
// 遍历
for (String key : set) {
System.out.println("key:" + key + ", value:" + pp.getProperty(key));
}
}
}
}
四、Properties类读取配置文件
Properties类除了能够当做Map使用,还可以与文件(可以是txt文件、可以是properties)进行关联,获得文件里面的数据!
void load(InputStream inStream):从输入字节流读取属性列表(键和元素对)。
***要求:将文件放在src目录(类的根路径)下面!***
#资源文件fis.properties内容:
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/day11_db
password=root
username=root
/*
读取配置文件(text类型的)
*/
public class Test {
public static void main(String[] args) {
// 创建Properties类的对象
Properties prop = new Properties();
// 创建资源文件对应的字节输入流
try (
//FileInputStream fis = new FileInputStream("day11_io/src/fis.txt");
FileInputStream fis = new FileInputStream("day11_io/src/fis.properties");
) {
// 让文件对应的的输入流与prop关联
prop.load(fis);
// 获得所有的key
Set<String> set = prop.stringPropertyNames();
// 判断
if (!set.isEmpty()) {
// 遍历
for (String key : set) {
// 获得值
String value = prop.getProperty(key);
// 打印输出
System.out.println(key + "对应的值是:" + value);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
扩展:使用ResourceBundle类读取properties配置文件
static ResourceBundle getBundle(String baseName): 通过读取在src下面的properties文件的名称(不要扩展名),得到一个ResourceBundle对象!String getString(String key): 获得指定key对应的value值 【driverClass=com.mysql.jdbc.Driver,只要将driverClass作为参数,就可以得到值!】
/*
ResourceBundle类:
读取properties配置文件!
*/
public class Test {
public static void main(String[] args) {
// 通过ResourceBundle类的静态方法,得到ResourceBundle类的对象
ResourceBundle bundle = ResourceBundle.getBundle("fis"); // 只要给定properties配置文件的名称,不要扩展名!
// 获得指定参数的值
String driverClass = bundle.getString("driverClass");
String url = bundle.getString("url");
String username = bundle.getString("username");
String password = bundle.getString("password");
System.out.println(driverClass);
System.out.println(url);
System.out.println(username);
System.out.println(password);
}
}
后记
在我们的日常开发中,底层的框架就已经将Properties配置文件的信息在系统初始化时就加载进系统了,不需要要我们操作,了解即可。
喜欢我的文章的朋友点点喜欢、收藏,也欢迎朋友们评论区留下你的意见和建议,恕毅在此拜谢!