一、properties 文件的书写要求
- 键值对格式 key=value。
- “=” 后面,value 前面的空格会被自动忽略。
- value 后面的空格不会忽略。
- “=” 后面的双引号,不会忽略。
- “#” 后面内容为注释,会忽略。
- key 和 value 都是 String 类型的。
二、properties 属性配置文件的读取
1.Properties 类
- Properties 继承于 Hashtable,用于管理配置信息的类。
- 由于 Properties 继承自 Hashtable 类,因此具有 Hashtable 的所有功能,同时还提供了一些特殊的方法来读取和写入属性文件。
- Properties 类常用于存储程序的配置信息,例如数据库连接信息、日志输出配置、应用程序设置等。使用 Properties 类,可以将这些信息存储在一个文本文件中,并在程序中读取这些信息。
(1) Properties 类的常用方法
(1) String getProperty(String key)
(2) String getProperty(String key, String defaultProperty)
(3) void load(InputStream streamIn) throws IOException
(4) void store(OutPutStream out)
(5) setProperty(String key, String value)
(6) clear()
- Properties 类提供了多种读取和写入属性文件的方法。其中最常用的方法是 load() 和 store() 方法。load() 方法可以从文件中读取属性,而 store() 方法可以将属性写入文件。
2.通过 IO 流的方式读取 properties 文件(可移植性差)
- 这种方式的路径缺点:移植性差,在IDEA中默认的当前路径是 project 的根。
- 这个代码假设离开了 IDEA,到了其他位置,可能当前路径就不是 project 的根了,这时路径就无效了。
public class Test{
public static void main(String[] args) throws Exception {
FileReader reader = new FileReader("configuration-related/src/resources/classInfo.properties");
Properties pro = new Properties();
pro.load(reader);
reader.close();
String className = pro.getProperty("className");
System.out.println(className);
Class c = Class.forName(className);
Object obj = c.newInstance();
System.out.println(obj);
}
}
3.如何获取类路径下的文件的绝对路径(通用的方式)
- 注意:src 是类的根路径。
- 这种方式获取绝对路径是通用的,在不同操作系统都可以。
String path = Thread.currentThread().getContextClassLoader().getResource("类路径下的文件的路径").getPath();
4.直接将类路径下的文件以流的形式返回(通用的方式)
InputStream fileReader = Thread.currentThread().getContextClassLoader().getResourcesAsStream("类路径下的文件的路径");
InputStream fileReader = ClassLoder.getSystemClassLoader().getResourceAsStream("类路径下的文件路径");
5.资源绑定器
- 资源绑定器,只能绑定 xxx.properties 文件。并且这个文件必须在类路径下。文件扩展名也必须是 properties 并且在写路径的时候,路径后面的扩展名不能写。
ResourceBundle bundle = ResourceBundle.getBundle("类路径下的文件路径");
三、总结
- 主要讲解多种读取 properties 文件的方法。
- ① IO流 + Peoperties 类
- ② 通过类加载器获取类路径下的 properties文件
- ③ 资源绑定器的方式。