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
トラックバック URL: https://perltips.twinkle.cc/trackback/41
Posted on 2005-12-23 by yas |