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