Java读取Properties文件的方法
在Java中,读取properties文件有几种常见的方法,下面我将介绍最常用的几种方式,并提供完整的代码示例。

(图片来源网络,侵删)
使用java.util.Properties类
这是最基本也是最常用的方法。
基本步骤:
- 创建
Properties对象 - 使用
load()方法加载properties文件 - 通过
getProperty()方法获取属性值
示例代码:
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) {
// 创建Properties对象
Properties prop = new Properties();
try (InputStream input = new FileInputStream("config.properties")) {
// 加载properties文件
prop.load(input);
// 获取属性值
String dbUrl = prop.getProperty("database.url");
String dbUser = prop.getProperty("database.user");
String dbPassword = prop.getProperty("database.password");
System.out.println("Database URL: " + dbUrl);
System.out.println("Database User: " + dbUser);
System.out.println("Database Password: " + dbPassword);
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
使用ResourceBundle类
ResourceBundle是专门用于本地化资源的类,也可以用于读取properties文件。
示例代码:
import java.util.ResourceBundle;
public class ResourceBundleExample {
public static void main(String[] args) {
// 加载resources目录下的config.properties文件
// 文件名不需要扩展名
ResourceBundle rb = ResourceBundle.getBundle("config");
// 获取属性值
String dbUrl = rb.getString("database.url");
String dbUser = rb.getString("database.user");
String dbPassword = rb.getString("database.password");
System.out.println("Database URL: " + dbUrl);
System.out.println("Database User: " + dbUser);
System.out.println("Database Password: " + dbPassword);
}
}
使用Class.getResourceAsStream()方法
当properties文件在类路径中时,可以使用这种方法。
示例代码:
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class ClasspathPropertiesReader {
public static void main(String[] args) {
Properties prop = new Properties();
try (InputStream input = ClasspathPropertiesReader.class
.getClassLoader()
.getResourceAsStream("config.properties")) {
if (input == null) {
System.out.println("Sorry, unable to find config.properties");
return;
}
prop.load(input);
// 获取属性值
System.out.println("Database URL: " + prop.getProperty("database.url"));
System.out.println("Database User: " + prop.getProperty("database.user"));
System.out.println("Database Password: " + prop.getProperty("database.password"));
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
使用Spring框架的@Value注解(如果在Spring环境中)
如果你使用的是Spring框架,可以通过@Value注解直接注入properties值。

(图片来源网络,侵删)
示例代码:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class SpringPropertiesExample {
@Value("${database.url}")
private String dbUrl;
@Value("${database.user}")
private String dbUser;
@Value("${database.password}")
private String dbPassword;
public void printProperties() {
System.out.println("Database URL: " + dbUrl);
System.out.println("Database User: " + dbUser);
System.out.println("Database Password: " + dbPassword);
}
}
注意事项
- 文件位置:确保properties文件位于正确的位置(项目根目录、resources目录或指定路径)
- 文件编码:确保properties文件使用UTF-8编码,特别是当包含非ASCII字符时
- 异常处理:始终处理可能出现的
IOException - 资源关闭:使用try-with-resources语句确保InputStream正确关闭
- 默认值:可以使用
getProperty(key, defaultValue)方法提供默认值
示例properties文件内容(config.properties)
# Database Configuration
database.url=jdbc:mysql://localhost:3306/mydb
database.user=admin
database.password=secret
选择哪种方法取决于你的具体需求和项目环境,对于简单的Java项目,java.util.Properties是最直接的选择;对于Spring应用,@Value注解会更加方便。

(图片来源网络,侵删)
