Java Properties クラス
Properties は Hashtable を継承し、設定情報を管理するためのクラスです。
Properties は Hashtable クラスを継承しているため、Hashtable のすべての機能を持ちます。また、属性ファイルを読み書きするための特別なメソッドも提供します。
Properties クラスは、プログラムの設定情報(データベース接続情報、ログ出力設定、アプリケーション設定など)を格納するためによく使用されます。Properties クラスを使用すると、これらの情報をテキストファイルに保存し、プログラム内で読み取ることができます。
Properties クラスは多くの Java クラスで使用されています。たとえば、環境変数を取得する際に、System.getProperties() メソッドの戻り値として使用されます。
Properties は次のインスタンス変数を定義しています。この変数は、Properties オブジェクトに関連するデフォルトのプロパティリストを保持します。
Properties defaults;
Properties クラスは 2 つのコンストラクタを定義しています。最初のコンストラクタにはデフォルト値がありません。
Properties()
2 番目のコンストラクタは propDefault をデフォルト値として使用します。どちらの場合も、プロパティリストは空です。
Properties(Properties propDefault)
Hashtable で定義されているメソッドのほかに、Properties は次のメソッドも定義しています。
| 番号 | メソッドの説明 |
|---|---|
| 1 |
String getProperty(String key) 指定されたキーを使用して、このプロパティリスト内のプロパティを検索します。 |
| 2 |
String getProperty(String key, String defaultProperty) 指定されたキーを使用して、プロパティリスト内のプロパティを検索します。 |
| 3 |
void list(PrintStream streamOut) プロパティリストを指定された出力ストリームに出力します。 |
| 4 |
void list(PrintWriter streamOut) プロパティリストを指定された出力ストリームに出力します。 |
| 5 |
void load(InputStream streamIn) throws IOException 入力ストリームからプロパティリスト(キーと要素のペア)を読み取ります。 |
| 6 |
Enumeration propertyNames( ) 単純な行指向の形式で、入力文字ストリームからプロパティリスト(キーと要素のペア)を読み取ります。 |
| 7 |
Object setProperty(String key, String value) Hashtable の put メソッドを呼び出します。 |
| 8 |
void store(OutputStream streamOut, String description) load(InputStream) メソッドを使用して Properties テーブルにロードするのに適した形式で、この Properties テーブルのプロパティリスト(キーと要素のペア)を出力ストリームに書き込みます。 |
Properties クラスは、プロパティファイルを読み書きするためのさまざまなメソッドを提供しています。その中で最もよく使用されるのは load() メソッドと store() メソッドです。
load() メソッドはファイルからプロパティを読み取ることができ、store() メソッドはプロパティをファイルに書き込むことができます。
以下は、Properties クラスを使用してプロパティファイルを読み書きする方法を示す簡単な例です。
例
import java.io.*;
import java.util.Properties;
public class PropertiesExample {
public static void main(String[] args) {
Properties prop = new Properties();
try {
// プロパティファイルを読み込む
prop.load(new FileInputStream("config.properties"));
// プロパティ値を取得する
String username = prop.getProperty("username");
String password = prop.getProperty("password");
// プロパティ値を出力する
System.out.println("username: " + username);
System.out.println("password: " + password);
// プロパティ値を変更する
prop.setProperty("username", "newUsername");
prop.setProperty("password", "newPassword");
// プロパティをファイルに保存する
prop.store(new FileOutputStream("config.properties"), null);
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
上記の例では、Properties オブジェクトを作成し、load() メソッドを使用して設定ファイルからプロパティを読み取りました。次に、getProperty() メソッドを使用してプロパティ値を取得し、コンソールに出力しました。その後、setProperty() メソッドを使用してプロパティ値を変更し、store() メソッドを使用して変更後のプロパティをファイルに保存しました。
例
次のプログラムは、このデータ構造がサポートするいくつかのメソッドを示しています。
例
上記の例をコンパイルして実行した結果は次のとおりです:
The capital of Missouri is Jefferson City. The capital of Illinois is Springfield. The capital of Indiana is Indianapolis. The capital of California is Sacramento. The capital of Washington is Olympia. The capital of Florida is Not Found.
その他の拡張
Java データ構造