Java使用commons-configuration讀取配置檔案

(.*)釋然發表於2020-10-03

pom.xml

<dependencies>
   <dependency>
        <groupId>commons-configuration</groupId>
        <artifactId>commons-configuration</artifactId>
        <version>1.10</version>
    </dependency>
</dependencies>

test.ini

; default config

[DEFAULT]

admin_http_listen = 127.0.0.1:80

admin_https_listen = 127.0.0.1:443

test.properties

A = one
B = two
C = three,four
D = True

讀取properties配置檔案

import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;

import java.util.List;

/**
 * @author xxx
 */
public class PropertiesFile {
    /**
     * 配置檔案存放路徑及檔名稱
     */
    private String propertiesFilePath;
    private PropertiesConfiguration cfg = null;

    public PropertiesFile(String propertiesFilePath) {
        try {
            this.propertiesFilePath = propertiesFilePath;
            cfg = new PropertiesConfiguration(propertiesFilePath);
        } catch (ConfigurationException e) {
            e.printStackTrace();
        }
        // 當檔案的內容發生改變時,配置物件也會重新整理
        cfg.setReloadingStrategy(new FileChangedReloadingStrategy());
    }

    public void setPropertiesFilePath(String propertiesFilePath) {
        this.propertiesFilePath = propertiesFilePath;
    }

    /**
     * 讀取properties檔案返回一個String型別的結果,如果是一組資料,例A = 1,2使用此方法get後將之會返回1
     * @param key 需要查詢的key
     * @return String型別的查詢結果
     */
    public String getStringValue(String key) {
        return cfg.getString(key);
    }

    /**
     * 讀取properties檔案返回一個Int型別的結果,如果是一組資料,例A = 1,2使用此方法get後將之會返回1
     * @param key 需要查詢的key
     * @return Int型別的查詢結果
     */
    public int getIntValue(String key) {
        return cfg.getInt(key);
    }

    /**
     * 讀取properties檔案返回一個Boolean型別的結果
     * @param key 需要查詢的key
     * @return Boolean型別的查詢結果
     */
    public boolean getBooleanValue(String key) {
        return cfg.getBoolean(key);
    }

    /**
     * 讀取properties檔案返回一個結果List
     * @param key 需要查詢的key
     * @return List結果
     */
    public List<?> getListValue(String key) {
        return cfg.getList(key);
    }

    /**
     * 讀取properties檔案返回一個結果陣列
     * @param key 需要查詢的key
     * @return 陣列結果
     */
    public String[] getArrayValue(String key) {
        return cfg.getStringArray(key);
    }

    public static void main(String[] args) {
        PropertiesFile propertiesFile = new PropertiesFile("config/test.properties");
        System.out.println(propertiesFile.getListValue("C"));
    }
}

讀取ini檔案

import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.HierarchicalINIConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;

import java.util.List;

/**
 * @author xxx
 */
public class INIFile {

    /**
     * 配置檔案存放路徑及檔名稱
     */
    private String iniFilePath;
    private HierarchicalINIConfiguration cfg = null;

    public INIFile(String iniFilePath) {
        try {
            this.iniFilePath = iniFilePath;
            cfg = new HierarchicalINIConfiguration(iniFilePath);
        } catch (ConfigurationException e) {
            e.printStackTrace();
        }
        // 當檔案的內容發生改變時,配置物件也會重新整理
        cfg.setReloadingStrategy(new FileChangedReloadingStrategy());
    }

    public void setIniFilePath(String iniFilePath) {
        this.iniFilePath = iniFilePath;
    }

    /**
     * 讀取ini檔案返回一個String型別的結果,如果是一組資料,例A = 1,2使用此方法get後將之會返回1
     * @param key 需要查詢的key
     * @return String型別的查詢結果
     */
    public String getStringValue(String key) {
        return cfg.getString(key);
    }

    /**
     * 讀取ini檔案返回一個Int型別的結果,如果是一組資料,例A = 1,2使用此方法get後將之會返回1
     * @param key 需要查詢的key
     * @return Int型別的查詢結果
     */
    public int getIntValue(String key) {
        return cfg.getInt(key);
    }

    /**
     * 讀取ini檔案返回一個Boolean型別的結果
     * @param key 需要查詢的key
     * @return Boolean型別的查詢結果
     */
    public boolean getBooleanValue(String key) {
        return cfg.getBoolean(key);
    }

    /**
     * 讀取ini檔案返回一個結果List
     * @param key 需要查詢的key
     * @return List結果
     */
    public List<?> getListValue(String key) {
        return cfg.getList(key);
    }

    /**
     * 讀取ini檔案返回一個結果陣列
     * @param key 需要查詢的key
     * @return 陣列結果
     */
    public String[] getArrayValue(String key) {
        return cfg.getStringArray(key);
    }

    public static void main(String[] args) {
        INIFile iniFile = new INIFile("config/test.ini");
        System.out.println(iniFile.getStringValue("DEFAULT.admin_http_listen"));
    }
}

相關文章