Java で、設定ファイルから値を読み込む方法

Java で設定ファイル (Attribute = Value の形式) を用意して、その設定ファイルに書いた属性の値を読み込むには、Class#getResourceAsStream(String s) メソッドを使う。以下、定義ファイルに host=10.0.0.1、port=8080 と書いてあるものを、Client#init() メソッドの中で処理する例である。ひな型として以下の 3つのファイル (Client.java、ClientImpl.java、Client.properties) は 3点セットとし自分のパターンとして持っておきたい。

Client.properties ファイルの内容 (以下の 2行)


host=10.0.0.1
port=8080

Client.java ファイルの内容

public interface Client {
public static final String PROPERTY_FILE = "Client.properties";
public static final String HOST = "host";
public static final String PORT = "port";

public void init();
}

ClientImpl.java ファイルの内容

import java.io.InputStream; import java.util.Properties; public class ClientImpl implements Client {
public static String DEFAULT_HOST = "192.168.0.1";
public static int    DEFAULT_PORT = 1024;

public static void main(String[] args) {

    Client client = new ClientImpl();
    client.init();
}

public void init() {

    this.getProperties();
System.out.println("host: " + DEFAULT_HOST); System.out.println("port: " + DEFAULT_PORT);
}

protected void getProperties() {

    try {

        InputStream is = getClass().getResourceAsStream(Client.PROPERTY_FILE);
        Properties p = new Properties();
        p.load(is);

        if (p != null) {

            // Read a host address
            String host = p.getProperty(Client.HOST);
            if (host != null)
                DEFAULT_HOST = host;

            // Read a port
            String port = p.getProperty(Client.PORT);
            if (port != null)
                DEFAULT_PORT = Integer.parseInt(port);

        }
    } catch (Exception e) {
        System.out.println("File not found: " + Client.PROPERTY_FILE
                + ".  Ignored the error.");
    }
}
}

コンパイル方法 (コンソール (Windows の場合はコマンドプロンプト) より)


> javac *.java

実行方法 (コンソール (Windows の場合はコマンドプロンプト) より)


> java ClientImpl