通常、Javaプロパティファイルは、プロジェクト構成データまたは設定を格納するために使用されます。このチュートリアルでは、プロパティファイルの読み書き方法を説明します。

1.プロパティファイルに書き込む

プロパティ値を設定し、 `config.properties`という名前のプロパティファイルに書き込みます。

App.java

package com.mkyong.properties;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Properties;

public class App {
  public static void main(String[]args) {

    Properties prop = new Properties();
    OutputStream output = null;

    try {

        output = new FileOutputStream("config.properties");

       //set the properties value
        prop.setProperty("database", "localhost");
        prop.setProperty("dbuser", "mkyong");
        prop.setProperty("dbpassword", "password");

       //save properties to project root folder
        prop.store(output, null);

    } catch (IOException io) {
        io.printStackTrace();
    } finally {
        if (output != null) {
            try {
                output.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
  }
}


出力

config.properties

#Fri Jan 17 22:37:45 MYT 2014
dbpassword=password
database=localhost
dbuser=mkyong

__P.Sファイルパスが指定されていない場合、このプロパティファイルはプロジェクトのルートフォルダに保存されます。

2.プロパティファイルをロードする

ファイルシステムからプロパティファイルをロードし、プロパティ値を取得します。

App.java

package com.mkyong.properties;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class App {
  public static void main(String[]args) {

    Properties prop = new Properties();
    InputStream input = null;

    try {

        input = new FileInputStream("config.properties");

       //load a properties file
        prop.load(input);

       //get the property value and print it out
        System.out.println(prop.getProperty("database"));
        System.out.println(prop.getProperty("dbuser"));
        System.out.println(prop.getProperty("dbpassword"));

    } catch (IOException ex) {
        ex.printStackTrace();
    } finally {
        if (input != null) {
            try {
                input.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

  }
}


出力

localhost
mkyong
password

3.クラスパスからプロパティファイルをロードする

プロジェクトクラスパスからプロパティファイル `config.properties`を読み込み、プロパティ値を取得します。

__P.Sプロパティファイル “config.properties”がプロジェクトのクラスパスルートフォルダにあるとします。

App.java

package com.mkyong.properties;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class App {

  public static void main( String[]args ){

        Properties prop = new Properties();
        InputStream input = null;

        try {

            String filename = "config.properties";
            input = App3.class.getClassLoader().getResourceAsStream(filename);
            if(input==null){
                    System.out.println("Sorry, unable to find " + filename);
                return;
            }

           //load a properties file from class path, inside static method
            prop.load(input);

               //get the property value and print it out
                System.out.println(prop.getProperty("database"));
                System.out.println(prop.getProperty("dbuser"));
                System.out.println(prop.getProperty("dbpassword"));

        } catch (IOException ex) {
            ex.printStackTrace();
        } finally{
            if(input!=null){
                try {
                input.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            }
        }

    }
}


出力

localhost
mkyong
password

非静的メソッドの場合は、次のようにします。

prop.load(getClass().getClassLoader().getResourceAsStream("config.properties"));

4.プロパティファイルからすべてを印刷します.

プロジェクトクラスパスからプロパティファイル `config.properties`を読み込み、キーと値を取得します。

App.java

package com.mkyong.properties;

import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Properties;

public class App {

  public static void main(String[]args) {
    App app = new App();
    app.printThemAll();
  }

  private void printThemAll() {

    Properties prop = new Properties();
    InputStream input = null;

    try {

        String filename = "config.properties";
        input = getClass().getClassLoader().getResourceAsStream(filename);
        if (input == null) {
            System.out.println("Sorry, unable to find " + filename);
            return;
        }

        prop.load(input);

        Enumeration<?> e = prop.propertyNames();
        while (e.hasMoreElements()) {
            String key = (String) e.nextElement();
            String value = prop.getProperty(key);
            System.out.println("Key : " + key + ", Value : " + value);
        }

    } catch (IOException ex) {
        ex.printStackTrace();
    } finally {
        if (input != null) {
            try {
                input.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

  }

}


出力

Key : dbpassword, Value : password
Key : database, Value : localhost
Key : dbuser, Value : mkyong

参考文献

  1. リンク://java/java-getresourceas-static-method-stream/[Java:

静的メソッドのGetResourceAsStream]。

http://docs.oracle.com/javase/7/docs/api/java/util/Properties.html

[Java

プロパティJavaDoc]