JavaTM 2 Platform
Std. Ed. v1.3

java.util
クラス Properties

java.lang.Object
  |
  +--java.util.Dictionary
        |
        +--java.util.Hashtable
              |
              +--java.util.Properties
すべての実装インタフェース:
Cloneable, Map, Serializable
直系の既知のサブクラス:
Provider

public class Properties
extends Hashtable

Properties クラスは、不変のプロパティセットを表します。Properties をストリームに保管したり、ストリームからロードしたりすることができます。プロパティリストの各キー、およびそれに対応する値は文字列です。

プロパティリストには、その「デフォルト値」として別のプロパティリストを持つことができます。元のプロパティリストでプロパティキーが見つからないと、この 2 番目のプロパティリストが検索されます。

PropertiesHashtable を継承するので、Properties オブジェクトに対して put メソッドおよび putAll メソッドを適用できます。しかし、これらのメソッドを使用することは推奨されません。これらのメソッドを使うと、呼び出し側にキーまたは値が String ではないエントリを挿入させるからです。setProperty メソッドを代わりに使用してください。String 以外のキーまたは値を格納する「妥協的」な Properties オブジェクトで store メソッドまたは save メソッドが呼び出されると、その呼び出しは失敗します。

プロパティをストリームに保存するとき、またはストリームからロードするときに、ISO 8859-1 文字エンコーディングが使用されます。このエンコーディングに直接表示できない文字には、Unicode escapes が使用されます。ただし、エスケープシーケンスでは 1 文字の「u」だけが使用可能です。他の文字エンコーディングとプロパティファイルを変換する場合、native2ascii ツールを使用できます。

導入されたバージョン:
JDK1.0
関連項目:
Solaris 用 native2ascii ツール, Windows 用 native2ascii ツール, 直列化された形式

クラス java.util.Map から継承した内部クラス
Map.Entry
 
フィールドの概要
protected  Properties defaults
          プロパティリストにないキーのデフォルト値を持つプロパティリストです。
 
コンストラクタの概要
Properties()
          デフォルト値を持たない空のプロパティリストを作成します。
Properties(Properties defaults)
          指定されたデフォルト値を持つ空のプロパティリストを作成します。
 
メソッドの概要
 String getProperty(String key)
          指定されたキーを持つプロパティを、プロパティリストから探します。
 String getProperty(String key, String defaultValue)
          指定されたキーを持つプロパティを、プロパティリストから探します。
 void list(PrintStream out)
          指定された出力ストリームに、プロパティリストを出力します。
 void list(PrintWriter out)
          指定された出力ストリームに、プロパティリストを出力します。
 void load(InputStream inStream)
          入力ストリームからキーと要素が対になったプロパティリストを読み込みます。
 Enumeration propertyNames()
          プロパティリストにあるすべてのキーのリストを返します。
 void save(OutputStream out, String header)
          推奨されていません。 このメソッドは、プロパティリストの保存中に入出力エラーが発生しても IOException をスローしません。Java 2 プラットフォーム v1.2 以降では、プロパティリストの保存方法としては、store(OutputStream out, String header) メソッドの使用が推奨されます。
 Object setProperty(String key, String value)
          ハッシュテーブルの put メソッドを呼び出します。
 void store(OutputStream out, String header)
          Properties テーブル内のプロパティリスト (キーと要素のペア) を、load メソッドを使って Properties テーブルにロードするのに適切なフォーマットで出力ストリームに書き込みます。
 
クラス java.util.Hashtable から継承したメソッド
clear, clone, contains, containsKey, containsValue, elements, entrySet, equals, get, hashCode, isEmpty, keys, keySet, put, putAll, rehash, remove, size, toString, values
 
クラス java.lang.Object から継承したメソッド
finalize, getClass, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

defaults

protected Properties defaults
プロパティリストにないキーのデフォルト値を持つプロパティリストです。
コンストラクタの詳細

Properties

public Properties()
デフォルト値を持たない空のプロパティリストを作成します。

Properties

public Properties(Properties defaults)
指定されたデフォルト値を持つ空のプロパティリストを作成します。
パラメータ:
defaults - デフォルト値
メソッドの詳細

setProperty

public Object setProperty(String key,
                          String value)
ハッシュテーブルの put メソッドを呼び出します。getProperty メソッドと対になります。プロパティのキーおよび値に文字列を使うことを義務付けます。
パラメータ:
key - プロパティリストに配置されるキー
value - key に対応する値
導入されたバージョン:
1.2
関連項目:
getProperty(java.lang.String)

load

public void load(InputStream inStream)
          throws IOException
入力ストリームからキーと要素が対になったプロパティリストを読み込みます。ストリームは、ISO 8859-1 文字エンコーディングを使用しているとみなされます。

各プロパティは、入力ストリームに行単位で登録されています。各行は行区切り文字 (\n\r、または \r\n) で終わります。入力ストリームから読み込んだ行は、入力ストリームでファイルの終わりに達するまで処理されます。

空白文字だけの行、または最初の非空白文字が ASCII 文字 # または ! である行は無視されます。つまり、# または ! はコメント行を示します。

空白行またはコメント行以外のすべての行は、テーブルに追加されるプロパティを記述します。ただし、行の終わりが \ の場合は、次の行があれば継続行として扱われます (下記を参照)。キーは、最初の非空白文字から、最初の ASCII 文字 =:、または空白文字の直前までの、行内のすべての文字から構成されます。キーの終わりを示す文字は、前に \ を付けることによりキーに含めることもできます。キーの後ろの空白はすべてスキップされます。キーの後ろの最初の非空白文字が = または : である場合は、これらのキーは無視され、そのあとの空白文字もすべてスキップされます。行内のそれ以外の文字はすべて、関連した要素文字列の一部となります。要素文字列内では、ASCII エスケープシーケンス \t\n\r\\\"\'\ (円記号とスペース)、および \uxxxx は認識され、単独の文字に変換されます。また、行の最後の文字が \ である場合は、次の行は現在の行の継続として扱われます。その場合、\ と行区切り文字が破棄され、継続行の先頭に空白があればそれもすべて破棄され、要素文字列の一部にはなりません。

たとえば、次の 4 行はそれぞれキー Truth と、関連した要素値 Beauty を表します。

 Truth = Beauty
	Truth:Beauty
 Truth			:Beauty
 
また、次の 3 行は 1 つのプロパティを表します。

 fruits				apple, banana, pear, \
                                  cantaloupe, watermelon, \
                                  kiwi, mango
 
キーは fruits で、次の要素に関連付けれられています。

"apple, banana, pear, cantaloupe, watermelon,kiwi, mango"
最終的な結果でコンマのあとに必ずスペースが表示されるように、各 \ の前にスペースがあります。行の終わりを示す \ と、継続行の先頭にある空白は破棄され、他の文字に置換されません。

また、次の 3 番目の例では、キーが cheeses で、関連した要素が空の文字列であることを表します。

cheeses
 

パラメータ:
inStream - 入力ストリーム
例外:
IOException - 入力ストリームからの読み込み中にエラーが発生した場合

save

public void save(OutputStream out,
                 String header)
推奨されていません。 このメソッドは、プロパティリストの保存中に入出力エラーが発生しても IOException をスローしません。Java 2 プラットフォーム v1.2 以降では、プロパティリストの保存方法としては、store(OutputStream out, String header) メソッドの使用が推奨されます。

store(OutputStream out, String header) メソッドを呼び出すことにより、スローされた IOExceptions を抑止します。
パラメータ:
out - 出力ストリーム
header - プロパティリストの記述
例外:
ClassCastException - この Properties オブジェクトに、String ではないキーまたは値が格納されている場合

store

public void store(OutputStream out,
                  String header)
           throws IOException
Properties テーブル内のプロパティリスト (キーと要素のペア) を、load メソッドを使って Properties テーブルにロードするのに適切なフォーマットで出力ストリームに書き込みます。ストリームは、ISO 8859-1 文字エンコーディングを使用して書き込まれます。

Properties テーブル (存在する場合) のデフォルトテーブルからのプロパティは、このメソッドによっては書き込まれません。

header 引数が null でない場合は、ASCII 文字の #、header の文字列、および行区切り文字が最初に出力ストリームに書き込まれます。このため、header は識別コメントとして使うことができます。

次に、ASCII 文字の #、現在の日時 (DatetoString メソッドによって現在時刻が生成されるのと同様)、および Writer によって生成される行区切りからなるコメント行が書き込まれます。

続いて、Properties テーブル内のすべてのエントリが 1 行ずつ書き出されます。各エントリのキー文字列、ASCII 文字の =、関連した要素文字列が書き込まれます。要素文字列の各文字は、エスケープシーケンスとして描画する必要があるかどうか確認されます。ASCII 文字の \、タブ、改行、および復帰はそれぞれ \\\t\n、および \r として書き込まれます。\u0020 より小さい文字および \u007E より大きい文字は、対応する 16 進値 xxxx を使って \uxxxx として書き込まれます。埋め込み空白文字でも後書き空白文字でもない先行空白文字は、前に \ を付けて書き込まれます。キーと値の文字 #!=、および : は、必ず正しくロードされるように、前にスラッシュを付けて書き込まれます。

エントリが書き込まれたあとで、出力ストリームがフラッシュされます。出力ストリームはこのメソッドから復帰したあとも開いたままです。

パラメータ:
out - 出力ストリーム
header - プロパティリストの記述
例外:
IOException - このプロパティリストを指定した出力ストリームに書き込んで、IOException がスローされた場合
ClassCastException - この Properties オブジェクトに、String ではないキーまたは値が格納されている場合

getProperty

public String getProperty(String key)
指定されたキーを持つプロパティを、プロパティリストから探します。そのキーがプロパティリストにないと、デフォルトのプロパティリスト、さらにそのデフォルト値が繰り返し調べられます。そのプロパティが見つからない場合は、null が返されます。
パラメータ:
key - プロパティキー
戻り値:
指定されたキー値を持つこのプロパティリストの値
関連項目:
setProperty(java.lang.String, java.lang.String), defaults

getProperty

public String getProperty(String key,
                          String defaultValue)
指定されたキーを持つプロパティを、プロパティリストから探します。そのキーがプロパティリストにないと、デフォルトのプロパティリスト、さらにそのデフォルト値が繰り返し調べられます。そのプロパティが見つからない場合は、デフォルト値の引数が返されます。
パラメータ:
key - ハッシュテーブルキー
defaultValue - デフォルト値
戻り値:
指定されたキー値を持つこのプロパティリストの値
関連項目:
setProperty(java.lang.String, java.lang.String), defaults

propertyNames

public Enumeration propertyNames()
プロパティリストにあるすべてのキーのリストを返します。これには、デフォルトのプロパティリストにあるキーを含みます。
戻り値:
プロパティリストにあるすべてのキーのリスト。デフォルトのプロパティリストにあるキーを含む
関連項目:
Enumeration, defaults

list

public void list(PrintStream out)
指定された出力ストリームに、プロパティリストを出力します。このメソッドはデバッグに便利です。
パラメータ:
out - 出力ストリーム

list

public void list(PrintWriter out)
指定された出力ストリームに、プロパティリストを出力します。このメソッドはデバッグに便利です。
パラメータ:
out - 出力ストリーム
導入されたバージョン:
JDK1.1

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.