プロパティファイルを読む

Javaアプリケーションに対して、 外部ファイルから環境設定情報などを読み込ませるために、 ちょっとしたINIファイル(Configファイル)を使いたいとき、 java.util.Propertiesが役に立ちます。 また、Java VMが自前でもっている環境情報は、 java.lang.System.getProperty()で取得することができます。 ここでは簡単なプロパティファイルを読むサンプルを載せてみます。

/*
 * PropertyExample.java
 * 2002/01/19
 */
import java.io.*;
import java.util.*;

public class PropertyExample {

    public static void main(String[] args){

        try {
            String propertyFile = "/usr/app1" +
              System.getProperty("file.separator") + "sample.properties";
            Properties p = new Properties();
            FileInputStream fis = new FileInputStream(propertyFile);
            p.load(fis);
            fis.close();

            String hostName = p.getProperty("server.hostname");
            String port = p.getProperty("server.port");

            System.out.println("hostName=[" + hostName + "]");
            System.out.println("port=[" + port + "]");
        } catch(IOException ex){
            ex.printStackTrace();
            System.err.println("Ootto! caught exception...");
        }
    }
}

上のプログラムに対して用意するプロパティファイル (sample.properties) は次のようなものです。先頭がセミコロンの行はコメントです。 また空行は単に無視されます。

; テスト

server.hostname=mail.nsnhnkmmkk.co.jp
server.port=25

; end.


リソースとして読む

プロパティファイルに限りませんが、それらのようなアプリケーションで使用する設定ファイルを、 クラスファイルと共に環境に依存しないパスで配布したい場合、 リソースとして読む方法が便利です。以下に例を示します。

package app03.tools;

public class App(){
    // ...

    public static void main(String[] args){
        App appInstance = new App();
        /* リソースの読み込み */
        InputStream is = appInstance.getClass().getResourceAsStream("
            /app03/tools/ApplicationResources.properties");
        if(is == null){
            throw new RuntimeException("リソースが見つかりません。");
        }
        Properties p = new Properties();
        p.load(is);
    }
}

この例では、「ApplicationResources.properties」という名前のプロパティファイルを読んでいます。 そのファイルは、app03.tools.* というパッケージのクラスファイル(.class) が配置されるのと同じディレクトリに置きます。

Java kowaza Top

(first uploaded 2001/01/19 last updated 2003/12/20, Urano398)

Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!