Java从Properties类中取值
引言
在Java开发中,我们经常会遇到需要从配置文件中读取数据的情况。为了方便管理和修改,我们常常使用.properties文件来存储配置信息。Java中提供了Properties类来读取和写入.properties文件。本文将介绍如何使用Properties类从.properties文件中取值,并提供相应的代码示例。
Properties类简介
Properties类是Java提供的一个工具类,用于操作.properties文件。它继承自Hashtable类,可以存储键值对,其中的键和值都是字符串类型。Properties类提供了一些方法来读取和写入.properties文件,以及获取和设置属性值。
读取.properties文件
要从.properties文件中读取数据,首先需要创建一个Properties对象,并使用其load方法加载文件。下面是一个读取.properties文件的示例代码:
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class PropertiesReader {
public static void main(String[] args) {
try (InputStream input = new FileInputStream("config.properties")) {
Properties prop = new Properties();
prop.load(input);
String username = prop.getProperty("username");
String password = prop.getProperty("password");
System.out.println("Username: " + username);
System.out.println("Password: " + password);
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
在上面的代码中,我们首先创建了一个FileInputStream对象来读取.properties文件。然后创建一个Properties对象,并使用load方法加载文件内容。接下来,我们使用getProperty方法来取得指定键对应的值,并打印出来。
需要注意的是,我们使用了try-with-resources语句来自动关闭InputStream。这样可以确保资源在使用完毕后被正确关闭,无需手动编写关闭代码。
.properties文件格式
.properties文件是以键值对的形式存储配置信息的文本文件。每一行都是一个键值对,格式为key=value
。以下是一个示例的.properties文件:
# Database configuration
db.url=jdbc:mysql://localhost:3306/mydb
db.username=root
db.password=123456
# API configuration
api.url=
api.key=abcdefg123456
在上面的示例中,我们定义了一些数据库和API的配置信息。每个键值对都以key=value
的形式出现,其中键和值之间使用等号(=)进行分隔。
获取属性值
Properties类提供了多个方法来获取属性值,最常用的是getProperty方法。此方法接收一个键作为参数,返回对应的值。如果找不到对应的键,则返回null。下面是getProperty方法的示例使用:
String value = prop.getProperty("key");
除了getProperty方法,Properties类还提供了getPropertyOrDefault方法,该方法在找不到对应键时返回默认值:
String value = prop.getPropertyOrDefault("key", "default");
如果.properties文件中没有定义对应的键,则getPropertyOrDefault方法会返回默认值。
设置属性值
除了读取.properties文件,Properties类还可以用于设置属性值。我们可以使用setProperty方法来添加或修改属性。下面是一个示例代码:
prop.setProperty("key", "value");
以上代码将在Properties对象中添加一个键值对,键为"key",值为"value"。如果已经存在该键,则会将其值进行更新。
从Properties对象中获取所有键值对
如果我们需要获取.properties文件中的所有键值对,可以使用Properties类的entrySet方法。该方法返回一个Set对象,其中包含了所有的键值对。下面是一个示例代码:
Set<Map.Entry<Object, Object>> entrySet = prop.entrySet();
for (Map.Entry<Object, Object> entry : entrySet) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}
在上面的代码中,我们使用entrySet方法获取到所有的键值对,并使用for-each循环遍历输出。
关系图
下面是一个使用mermaid语法绘制的关系图,表示Properties类的结构和相关方法之间的关系:
erDiagram
Properties ||--|| Hashtable
Properties ||--|> Map
Properties "1" -- "1..*" Property
Properties : +load(InputStream): void
Properties : +getProperty(String): String
Properties : +getPropertyOrDefault(String, String): String
Properties : +setProperty(String, String): Object
Properties