配置文件引出Properties
传统的获取数据库相关信息的方法:
package day06.Properties_;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
/**
* @Author: Gin
* @Description:
* @Modified By: Gin
* @Date: Created in 15:30 2021/9/4
*/
public class Demo1 {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new FileReader("src\\day06\\mysql.properties"));
String line = "";
while((line = bufferedReader.readLine()) != null){
System.out.println(line);
// 传统方法获取数据库配置文件不够灵活
// 如果我们指定获取配置文件的 ip,则还需要判断,如下:
String[] str = line.split("=");
if("ip".equals(str[0])){
System.out.println("================");
System.out.println(str[0] + "的值为:" + str[1]);
System.out.println("================");
}
}
}
}
Properties 类
专门用于读写配置文件的集合类
配置文件的格式:
- 键=值
- 键=值
- 注意:键值对不需要有空格,值不需要用引号引起来。默认类型是String
·
Properties 的常见方法
load
:加载配置文件的键值对到Properties
对象list
:将数据显示到指定设备getProperty(key)
:根据键获取值setProperty(key,value)
:设置键值对到Properties
对象store
:将Properties
中的键值对存储到配置文件,在idea
中,保存信息到配置文件,如果含有中文,会存储为unicode码
。
使用 Properties 类读取 mysql.properties 文件
package day06.Properties_;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
/**
* @Author: Gin
* @Description: 使用 Properties 类来读取 mysql.properties 文件
* @Modified By: Gin
* @Date: Created in 15:51 2021/9/4
*/
public class Demo2 {
public static void main(String[] args) throws IOException {
// 1. 创建 properties 对象
Properties properties = new Properties();
// 2. 加载指定的配置文件
properties.load(new FileReader("src\\day06\\mysql.properties"));
// 3. 把键值对显示到控制台
properties.list(System.out);
// 4. 根据 key 获取对应的值
String ip = properties.getProperty("ip");
String username = properties.getProperty("username");
String password = properties.getProperty("password");
System.out.println("用户名是:" + username);
System.out.println("密码是:" + password);
}
}
使用 Properties 类写入 mysql.properties2 文件
package day06.Properties_;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
/**
* @Author: Gin
* @Description: 使用 Properties 类写入 mysql.properties2 文件
* @Modified By: Gin
* @Date: Created in 16:08 2021/9/4
*/
public class Demo3 {
public static void main(String[] args) throws IOException {
// 使用 Properties 类来创建配置文件,修改配置文件内容
Properties properties = new Properties();
// 创建
// 已存在的 key,就修改,不存在的 key,就创建
// Properties 父类是 Hashtable,底层就是 Hashtable,核心方法如下:
/*
public synchronized V put(K key, V value) {
// Make sure the value is not null
if (value == null) {
throw new NullPointerException();
}
// Makes sure the key is not already in the hashtable.
Entry<?,?> tab[] = table;
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length;
@SuppressWarnings("unchecked")
Entry<K,V> entry = (Entry<K,V>)tab[index];
for(; entry != null ; entry = entry.next) {
if ((entry.hash == hash) && entry.key.equals(key)) {
V old = entry.value;
entry.value = value;
return old;
}
}
addEntry(hash, key, value, index);
return null;
}
*/
properties.setProperty("user", "琴酒"); // 写入中文会转成 Unicode 编码
properties.setProperty("pswd", "123");
properties.setProperty("charset", "utf-8");
// 将键值对存储到文件中即可
// null:commens--注释
properties.store(new FileOutputStream("src\\day06\\mysql.properties2"), null);
System.out.println("配置文件保存成功!");
}
}