杰瑞科技汇

java property文件读取

Java Property文件读取指南

在Java中读取.properties文件是常见的配置文件读取操作,以下是几种常用的方法:

java property文件读取-图1
(图片来源网络,侵删)

使用java.util.Properties

这是最基本也是最常用的方法:

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class PropertyReader {
    public static void main(String[] args) {
        Properties prop = new Properties();
        InputStream input = null;
        try {
            // 使用绝对路径
            input = new FileInputStream("config.properties");
            // 或者使用类路径下的文件(推荐)
            // input = PropertyReader.class.getClassLoader().getResourceAsStream("config.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();
        } finally {
            if (input != null) {
                try {
                    input.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

使用java.util.ResourceBundle

这种方法更适合国际化,但也可以用于读取普通属性文件:

import java.util.ResourceBundle;
public class ResourceBundleExample {
    public static void main(String[] args) {
        // 假设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);
    }
}

使用Spring框架的@Value注解(Spring环境)

如果使用Spring框架,可以更方便地注入属性值:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class SpringPropertyReader {
    @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);
    }
}

需要在Spring配置中启用属性文件:

java property文件读取-图2
(图片来源网络,侵删)
@Configuration
@PropertySource("classpath:config.properties")
public class AppConfig {
    // 配置类内容
}

使用Apache Commons Configuration

对于更复杂的配置需求,可以使用Apache Commons Configuration库:

import org.apache.commons.configuration2.Configuration;
import org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder;
import org.apache.commons.configuration2.builder.fluent.Parameters;
import org.apache.commons.configuration2.ex.ConfigurationException;
public class CommonsConfigExample {
    public static void main(String[] args) {
        Parameters params = new Parameters();
        FileBasedConfigurationBuilder<Configuration> builder = 
            new FileBasedConfigurationBuilder<>(Configuration.class)
                .configure(params.properties().setFileName("config.properties"));
        try {
            Configuration config = builder.getConfiguration();
            String dbUrl = config.getString("database.url");
            String dbUser = config.getString("database.user");
            String dbPassword = config.getString("database.password");
            System.out.println("Database URL: " + dbUrl);
            System.out.println("Database User: " + dbUser);
            System.out.println("Database Password: " + dbPassword);
        } catch (ConfigurationException e) {
            e.printStackTrace();
        }
    }
}

最佳实践建议

  1. 使用类路径加载:推荐使用getClassLoader().getResourceAsStream()方法,这样属性文件可以打包在jar中
  2. 处理异常:始终正确处理可能出现的IO异常
  3. 默认值:使用getProperty(String key, String defaultValue)方法提供默认值
  4. 文件位置:将属性文件放在src/main/resources目录下,这样Maven/Gradle会自动将其放入类路径
  5. 敏感信息:不要在属性文件中存储密码等敏感信息,考虑使用环境变量或专门的配置管理工具

示例属性文件内容(config.properties)

database.url=jdbc:mysql://localhost:3306/mydb
database.user=admin
database.password=secret

选择哪种方法取决于你的具体需求和项目环境,对于简单的Java项目,java.util.Properties是最直接的选择;对于Spring项目,@Value注解非常方便;对于复杂的配置需求,可以考虑Apache Commons Configuration。

java property文件读取-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇