public abstract class Preferences extends Object
設定ノードは2つの個別のツリーで構成されます。一方はユーザー設定用、もう一方はシステム設定用です。それぞれのユーザーは個々のユーザー設定ツリーを持ち、そのシステムのすべてのユーザーはシステム設計ツリーを持ちます。ユーザー設定ツリーとシステム設定ツリーの定義は、実装ごとに異なります。ユーザー設定ツリーには、フォント選択、カラー選択、特定のアプリケーションに設定したウィンドウ位置やサイズなどが格納されます。システム設定ツリーには、アプリケーションのインストール構成データなどが格納されます。
設定ツリー内のノードには、階層ファイル・システムのディレクトリと同じ方法で名前が付けられます。設定ツリーの各ノードには、ノード名 (一意である必要はない)、一意の絶対パス名、および各上位ノード(そのノード自体を含む)を起点とした相対パス名が割り当てられます。
ルート・ノードのノード名は、空の文字列("")です。ほかのノードの名前は、作成時に任意に指定できます。ノード名には任意の文字を使用できますが、空の文字列は指定できず、スラッシュ文字('/')は使用できません。
ルート・ノードの絶対パス名は、「/」です。ルート・ノードの子の絶対パス名は、「/」+<ノード名>になります。その他のノードの絶対パス名は、<親の絶対パス名>+「/」+<ノード名>になります。絶対パス名は、常にスラッシュ文字から始まります。
ノードnの相対パス名は、上位ノードaを起点とした場合、nの絶対パス名を作成するときにaの絶対パス名に追加される文字列になります。先頭にスラッシュ文字がある場合は削除します。次の点に注意してください。
次の点にも注意してください。
設定データを変更するメソッドはすべて、非同期に実行できます。つまり、実行後はただちに復帰し、変更は実装に依存した遅延が経過してから永続バッキング・ストアに送られます。flushメソッドは、更新データをバッキング・ストアに強制的に書き込んで、同期をとるときに使用します。Java仮想マシンが正常終了しても、保留中の更新は失われません。このため、終了時に明示的にflushを呼び出して、保留中の更新を保持する必要はありません。
Preferencesオブジェクトから設定を読み込むときは、デフォルト値を指定してメソッドを呼び出す必要があります。読み込む前に値が設定されていなかった場合またはバッキング・ストアが利用できない場合は、そのデフォルト値が返されます。これは、バッキング・ストアが利用できなくなった場合でも、アプリケーションが動作できるようにするためです(ただし、機能がわずかに低下する)。一部のメソッド(flushなど)のセマンティックスでは、バッキング・ストアが利用できない場合にアプリケーションが動作しなくなります。通常のアプリケーションでは、これらのメソッドを呼び出す必要がありません。それらは、BackingStoreException
をスローするように宣言していることで識別できます。
このクラスのメソッドは、1つのJVMの複数のスレッドから並行して呼び出すことができます。このとき、外部的に同期化する必要はありません。実行結果は、逐次実行した場合と等価です。このクラスが複数のJVMによって同時に使用され、設定データが同じバッキング・ストアに格納された場合、データ・ストアは破壊しませんが、設定データの一貫性は保証されません。
このクラスには、エクスポート/インポート機能があり、設定をXMLドキュメントに「エクスポート」したり、設定が記述されたXMLドキュメントをシステムに「インポート」することができます。この機能は、設定ツリーのすべてまたは一部をバックアップし、そのバックアップを復元するときに使用します。
このXMLドキュメントでは、次のDOCTYPEが宣言されます。
<!DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">
設定をエクスポート/インポートするときに、システムURI (http://java.sun.com/dtd/preferences.dtd)にはアクセスしません。システムURIは、DTDを一意に識別する文字列として使用されます。その内容は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<!-- DTD for a Preferences tree. -->
<!-- The preferences element is at the root of an XML document
representing a Preferences tree. -->
<!ELEMENT preferences (root)>
<!-- The preferences element contains an optional version attribute,
which specifies version of DTD. -->
<!ATTLIST preferences EXTERNAL_XML_VERSION CDATA "0.0" >
<!-- The root element has a map representing the root's preferences
(if any), and one node for each child of the root (if any). -->
<!ELEMENT root (map, node*) >
<!-- Additionally, the root contains a type attribute, which
specifies whether it's the system or user root. -->
<!ATTLIST root
type (system|user) #REQUIRED >
<!-- Each node has a map representing its preferences (if any),
and one node for each child (if any). -->
<!ELEMENT node (map, node*) >
<!-- Additionally, each node has a name attribute -->
<!ATTLIST node
name CDATA #REQUIRED >
<!-- A map represents the preferences stored at a node (if any). -->
<!ELEMENT map (entry*) >
<!-- An entry represents a single preference, which is simply
a key-value pair. -->
<!ELEMENT entry EMPTY >
<!ATTLIST entry
key CDATA #REQUIRED
value CDATA #REQUIRED >
各Preferences実装には、PreferencesFactory
実装を関連付ける必要があります。ルート設定ノードを生成するときにPreferencesFactory実装を指定するには、Java(TM) SE実装にその方法を設定する必要があります。これによって、管理者はデフォルトのpreferences実装を代替実装に置き換えることができます。
実装にあたっての注意: SunのJREでは、PreferencesFactoryの実装は次のように実施されます。
システム・プロパティjava.util.prefs.PreferencesFactoryが定義されている場合、これがクラスを実装するPreferencesFactoryインタフェースの完全指定名と見なされます。その後、クラスがロードされ、インスタンスが作成されます。
システム・クラス・ローダー
の認識するjarファイルにPreferencesFactory実装クラス・ファイルがインストールされていて、このjarファイルにリソース・ディレクトリMETA-INF/services内のjava.util.prefs.PreferencesFactoryというプロバイダ構成ファイルが含まれている場合、そのファイルに指定されている最初のクラス名が使用されます。このようなjarファイルが2つ以上指定された場合は、最初に検出されたファイルが使用されます。その後、クラスがロードされ、インスタンスが作成されます。
最後に、前述のシステム・プロパティと拡張jarファイルのどちらも指定されていない場合は、そのとき使用されているプラットフォームに対してシステム・ワイドのデフォルトであるPreferencesFactory実装がロードされ、インスタンスが作成されます。
修飾子と型 | フィールドと説明 |
---|---|
static int |
MAX_KEY_LENGTH
キーとして使用できる文字列の最大長(80文字)です。
|
static int |
MAX_NAME_LENGTH
ノード名の最大長(80文字)です。
|
static int |
MAX_VALUE_LENGTH
値として使用できる文字列の最大長(8192文字)です。
|
修飾子 | コンストラクタと説明 |
---|---|
protected |
Preferences()
唯一のコンストラクタです。
|
修飾子と型 | メソッドと説明 |
---|---|
abstract String |
absolutePath()
この設定ノードの絶対パス名を返します。
|
abstract void |
addNodeChangeListener(NodeChangeListener ncl)
指定されたリスナーがこのノードのノード変更イベントを受信するように登録します。
|
abstract void |
addPreferenceChangeListener(PreferenceChangeListener pcl)
指定されたリスナーがこの設定ノードに対する設定変更イベントを受信するように登録します。
|
abstract String[] |
childrenNames()
この設定ノードの子の名前(このノードを起点とした相対名)を返します。
|
abstract void |
clear()
この設定ノード内の設定(キーと値のペアの関連付け)をすべて削除します。
|
abstract void |
exportNode(OutputStream os)
このノード(その下位ノードは含まない)に含まれているすべての設定を表すXMLドキュメントを、指定された出力ストリームに発行します。
|
abstract void |
exportSubtree(OutputStream os)
このノードとそのすべての下位ノードに含まれるすべての設定を表すXMLドキュメントを発行します。
|
abstract void |
flush()
この設定ノードとその下位ノードの内容に対するすべての変更を、永続ストアに強制的に格納します。
|
abstract String |
get(String key, String def)
この設定ノード内の指定されたキーに関連付けられている値を返します。
|
abstract boolean |
getBoolean(String key, boolean def)
この設定ノード内の指定されたキーに関連付けられている文字列が表すboolean値を返します。
|
abstract byte[] |
getByteArray(String key, byte[] def)
この設定ノード内の指定されたキーに関連付けられている文字列が表すbyte配列値を返します。
|
abstract double |
getDouble(String key, double def)
この設定ノード内の指定されたキーに関連付けられている文字列が表すdouble値を返します。
|
abstract float |
getFloat(String key, float def)
この設定ノード内の指定されたキーに関連付けられている文字列が表すfloat値を返します。
|
abstract int |
getInt(String key, int def)
この設定ノード内の指定されたキーに関連付けられている文字列が表すint値を返します。
|
abstract long |
getLong(String key, long def)
この設定ノード内の指定されたキーに関連付けられている文字列が表すlong値を返します。
|
static void |
importPreferences(InputStream is)
XMLドキュメントによって表されるすべての設定を、指定された入力ストリームからインポートします。
|
abstract boolean |
isUserNode()
この設定ノードがユーザー設定ツリーにある場合は、trueを返します。システム設定ツリーにある場合は、falseを返します。
|
abstract String[] |
keys()
この設定ノード内に関連付けられている値を持つキーをすべて返します。
|
abstract String |
name()
この設定ノードの名前(その親を起点とした相対名)を返します。
|
abstract Preferences |
node(String pathName)
このノードと同じツリーにある名前付き設定ノードを返します。このノードとその上位ノードが存在しない場合は、それらをすべて作成します。
|
abstract boolean |
nodeExists(String pathName)
名前付き設定ノードがこのノードと同じツリーに存在する場合は、trueを返します。
|
abstract Preferences |
parent()
この設定ノードの親を返し、このノードがルートの場合はnullを返します。
|
abstract void |
put(String key, String value)
この設定ノードで指定されたキーに、指定された値を関連付けます。
|
abstract void |
putBoolean(String key, boolean value)
この設定ノード内の指定されたキーに、指定されたboolean値を表す文字列を関連付けます。
|
abstract void |
putByteArray(String key, byte[] value)
この設定ノード内の指定されたキーに、指定されたbyte配列を表す文字列を関連付けます。
|
abstract void |
putDouble(String key, double value)
この設定ノード内の指定されたキーに、指定されたdouble値を表す文字列を関連付けます。
|
abstract void |
putFloat(String key, float value)
この設定ノード内の指定されたキーに、指定されたfloat値を表す文字列を関連付けます。
|
abstract void |
putInt(String key, int value)
この設定ノード内の指定されたキーに、指定されたint値を表す文字列を関連付けます。
|
abstract void |
putLong(String key, long value)
この設定ノード内の指定されたキーに、指定されたlong値を表す文字列を関連付けます。
|
abstract void |
remove(String key)
この設定ノード内の指定されたキーに関連付けられている値がある場合は、それを削除します。
|
abstract void |
removeNode()
この設定ノードとその下位ノードをすべて削除し、削除したノードに含まれている設定をすべて無効にします。
|
abstract void |
removeNodeChangeListener(NodeChangeListener ncl)
指定されたNodeChangeListenerを削除して、変更イベントの受信を停止します。
|
abstract void |
removePreferenceChangeListener(PreferenceChangeListener pcl)
指定された設定変更リスナーを削除して、設定変更イベントの受信を停止します。
|
abstract void |
sync()
syncを呼び出すと、最初に、VMから永続ストアに格納された変更がこの設定ノードとその下位ノードにすべて反映されます。
|
static Preferences |
systemNodeForPackage(Class<?> c)
システム設定ツリーから設定ノードを返します。このシステム設定ツリーは、規則に従って、指定されたクラスのパッケージに関連付けられています。
|
static Preferences |
systemRoot()
システムのルート設定ノードを返します。
|
abstract String |
toString()
この設定ノードの文字列表現を、次の式で計算されたかのように返します。(this.isUserNode() ? "User" :"System") + " Preference Node:" + this.absolutePath()。
|
static Preferences |
userNodeForPackage(Class<?> c)
呼出し側ユーザーの設定ツリーから設定ノードを返します。このユーザー設定ツリーは、規則に従って、指定されたクラスのパッケージに関連付けられています。
|
static Preferences |
userRoot()
呼出し側ユーザーのルート設定ノードを返します。
|
public static final int MAX_KEY_LENGTH
public static final int MAX_VALUE_LENGTH
public static final int MAX_NAME_LENGTH
public static Preferences userNodeForPackage(Class<?> c)
この規則は、名前なしのパッケージには適用されません。名前なしのパッケージに関連付けられている設定ノードは、<unnamed>になります。このノードは、長期間の使用には適していませんが、パッケージにまだ属していない開発初期段階のプログラムや使い捨てのプログラムで使用できます。重要なデータはこのノードに格納しないでください。それを使用するすべてのプログラムによって共有されているためです。
Fooクラスを使用して名前なしのパッケージに関する設定にアクセスするには、次の方法で設定ノードを取得します。
static Preferences prefs = Preferences.userNodeForPackage(Foo.class);このイディオムを使えば、文字列を使って設定ノードを記述する必要がなくなるため、実行時にエラーが発生する可能性が減ります。(クラス名の綴りを間違った場合は通常、コンパイル時にエラーが発生する。)
このメソッドを呼び出したときに、返されるノードとその上位ノードが存在しなかった場合は、それらのノードが作成されます。返されるノードがこの呼出し以前に存在しなかった場合、この呼出しによって作成されたノードとその上位ノードは、返されるノード(あるいはその上位ノードまたは下位ノード)上でflushメソッドが呼び出されたときに、持続的になります。
c
- ユーザー設定ノードを必要とするパッケージのクラス。NullPointerException
- cがnullである場合。SecurityException
- セキュリティ・マネージャが存在し、それがRuntimePermission("preferences")を拒否した場合。RuntimePermission
public static Preferences systemNodeForPackage(Class<?> c)
この規則は、名前なしのパッケージには適用されません。名前なしのパッケージに関連付けられている設定ノードは、<unnamed>になります。このノードは、長期間の使用には適していませんが、パッケージにまだ属していない開発初期段階のプログラムや使い捨てのプログラムで使用できます。重要なデータはこのノードに格納しないでください。それを使用するすべてのプログラムによって共有されているためです。
Fooクラスを使用して名前なしのパッケージに関する設定にアクセスするには、次の方法で設定ノードを取得します。
static Preferences prefs = Preferences.systemNodeForPackage(Foo.class);このイディオムを使えば、文字列を使って設定ノードを記述する必要がなくなるため、実行時にエラーが発生する可能性が減ります。(クラス名の綴りを間違った場合は通常、コンパイル時にエラーが発生する。)
このメソッドを呼び出したときに、返されるノードとその上位ノードが存在しなかった場合は、それらのノードが作成されます。返されるノードがこの呼出し以前に存在しなかった場合、この呼出しによって作成されたノードとその上位ノードは、返されるノード(あるいはその上位ノードまたは下位ノード)上でflushメソッドが呼び出されたときに、持続的になります。
c
- システム設定ノードを必要とするパッケージのクラス。NullPointerException
- cがnullである場合。SecurityException
- セキュリティ・マネージャが存在し、それがRuntimePermission("preferences")を拒否した場合。RuntimePermission
public static Preferences userRoot()
SecurityException
- セキュリティ・マネージャが存在し、それがRuntimePermission("preferences")を拒否した場合。RuntimePermission
public static Preferences systemRoot()
SecurityException
- セキュリティ・マネージャが存在し、それがRuntimePermission("preferences")を拒否した場合。RuntimePermission
public abstract void put(String key, String value)
key
- 指定の値が関連付けられるキー。value
- 指定のキーに関連付けられる値。NullPointerException
- キーまたは値がnullである場合。IllegalArgumentException
- key.length()がMAX_KEY_LENGTHを超える場合またはvalue.lengthがMAX_VALUE_LENGTHを超える場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。public abstract String get(String key, String def)
一部の実装は、デフォルト値をそのバッキング・ストアに格納します。指定されたキーに関連付けられている値がない場合でも、格納済みデフォルトがある場合は、指定されたデフォルトに優先して格納済みデフォルトが返されます。
key
- 関連付けられている値が返されるキー。def
- この設定ノードがkeyに関連付けられている値を持たない場合に返すべき値。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。NullPointerException
- keyがnullである場合。(defにはnull値を指定できる。)public abstract void remove(String key)
この実装が格納済みデフォルトをサポートしており、指定された設定に格納済みデフォルトが存在する場合は、この呼出しにより格納済みデフォルトが使用されるようになります。つまり、後続のget呼出しでは格納済みデフォルトが返されます。
key
- マッピングが設定ノードから削除されるキー。NullPointerException
- keyがnullである場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。public abstract void clear() throws BackingStoreException
この実装が格納済みデフォルトをサポートしており、設定階層内のこのノードに格納済みデフォルトが含まれている場合は、この呼出しにより格納済みデフォルトが使用されるようになります。つまり、後続のget呼出しでは格納済みデフォルトが返されます。
BackingStoreException
- バッキング・ストアで障害が発生したかストアとの通信が行えないために、このオペレーションを完了できない場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。removeNode()
public abstract void putInt(String key, int value)
Integer.toString(int)
に渡された場合に返される文字列です。このメソッドは、getInt(java.lang.String, int)
と組み合わせて使用します。key
- 文字列形式の値が関連付けられるキー。value
- キーに関連付けられる文字列形式の値。NullPointerException
- keyがnullである場合。IllegalArgumentException
- key.length()がMAX_KEY_LENGTHを超える場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。getInt(String,int)
public abstract int getInt(String key, int def)
Integer.parseInt(String)
によって整数に変換されます。キーに関連付けられている値がない場合、バッキング・ストアが利用できない場合、または関連付けられている値が渡されたときにInteger.parseInt(String)がNumberFormatException
をスローした場合は、指定されたデフォルトを返します。このメソッドは、putInt(java.lang.String, int)
と組み合わせて使用します。
この実装が格納済みデフォルトをサポートし、格納済みデフォルトが存在してアクセス可能であり、Integer.parseIntによってintに変換できる場合は、指定されたデフォルトに優先してこのintが返されます。
key
- 関連付けられている値がintとして返されるキー。def
- この設定ノードがkeyに関連付けられている値を持たないか、関連付けられている値をintとして解釈できないか、あるいはバッキング・ストアにアクセスできない場合に返すべき値。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。NullPointerException
- keyがnullである場合。putInt(String,int)
, get(String,String)
public abstract void putLong(String key, long value)
Long.toString(long)
に渡された場合に返される文字列です。このメソッドは、getLong(java.lang.String, long)
と組み合わせて使用します。key
- 文字列形式の値が関連付けられるキー。value
- キーに関連付けられる文字列形式の値。NullPointerException
- keyがnullである場合。IllegalArgumentException
- key.length()がMAX_KEY_LENGTHを超える場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。getLong(String,long)
public abstract long getLong(String key, long def)
Long.parseLong(String)
によってlongに変換されます。キーに関連付けられている値がない場合、バッキング・ストアが利用できない場合、または関連付けられている値が渡されたときにLong.parseLong(String)がNumberFormatException
をスローした場合は、指定されたデフォルトを返します。このメソッドは、putLong(java.lang.String, long)
と組み合わせて使用します。
この実装が格納済みデフォルトをサポートし、格納済みデフォルトが存在してアクセス可能であり、Long.parseLonによってlongに変換できる場合は、指定されたデフォルトに優先してこのlongが返されます。
key
- 関連付けられている値がlongとして返されるキー。def
- この設定ノードがkeyに関連付けられている値を持たないか、関連付けられている値をlongとして解釈できないか、あるいはバッキング・ストアにアクセスできない場合に返すべき値。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。NullPointerException
- keyがnullである場合。putLong(String,long)
, get(String,String)
public abstract void putBoolean(String key, boolean value)
getBoolean(java.lang.String, boolean)
と組み合わせて使用します。key
- 文字列形式の値が関連付けられるキー。value
- キーに関連付けられる文字列形式の値。NullPointerException
- keyがnullである場合。IllegalArgumentException
- key.length()がMAX_KEY_LENGTHを超える場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。getBoolean(String,boolean)
, get(String,String)
public abstract boolean getBoolean(String key, boolean def)
putBoolean(java.lang.String, boolean)
と組み合わせて使用します。
キーに関連付けられる値がない場合、バッキング・ストアが利用できない場合、または関連付けられている値が「true」または「false」(大文字と小文字は区別されない)以外である場合は、指定されたデフォルトを返します。
この実装が格納済みデフォルトをサポートし、格納済みデフォルトが存在してアクセス可能であり、格納済みデフォルトが「true」または「false」(大文字と小文字は区別されない)である場合は、指定されたデフォルトに優先して使用されます。そうでない場合は、指定されたデフォルトが使用されます。
key
- 関連付けられている値がbooleanとして返されるキー。def
- この設定ノードがkeyに関連付けられている値を持たないか、関連付けられている値をbooleanとして解釈できないか、あるいはバッキング・ストアにアクセスできない場合に返すべき値。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。NullPointerException
- keyがnullである場合。get(String,String)
, putBoolean(String,boolean)
public abstract void putFloat(String key, float value)
Float.toString(float)
に渡された場合に返される文字列です。このメソッドは、getFloat(java.lang.String, float)
と組み合わせて使用します。key
- 文字列形式の値が関連付けられるキー。value
- キーに関連付けられる文字列形式の値。NullPointerException
- keyがnullである場合。IllegalArgumentException
- key.length()がMAX_KEY_LENGTHを超える場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。getFloat(String,float)
public abstract float getFloat(String key, float def)
Float.parseFloat(String)
によって整数に変換されます。キーに関連付けられている値がない場合、バッキング・ストアが利用できない場合、または関連付けられている値が渡されたときにFloat.parseFloat(String)がNumberFormatException
をスローした場合は、指定されたデフォルトを返します。このメソッドは、putFloat(java.lang.String, float)
と組み合わせて使用します。
この実装が格納済みデフォルトをサポートし、格納済みデフォルトが存在してアクセス可能であり、Float.parseFloatによってfloatに変換できる場合は、指定されたデフォルトに優先してこのfloatが返されます。
key
- 関連付けられている値がfloatとして返されるキー。def
- この設定ノードがkeyに関連付けられている値を持たないか、関連付けられている値をfloatとして解釈できないか、あるいはバッキング・ストアにアクセスできない場合に返すべき値。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。NullPointerException
- keyがnullである場合。putFloat(String,float)
, get(String,String)
public abstract void putDouble(String key, double value)
Double.toString(double)
に渡された場合に返される文字列です。このメソッドは、getDouble(java.lang.String, double)
と組み合わせて使用します。key
- 文字列形式の値が関連付けられるキー。value
- キーに関連付けられる文字列形式の値。NullPointerException
- keyがnullである場合。IllegalArgumentException
- key.length()がMAX_KEY_LENGTHを超える場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。getDouble(String,double)
public abstract double getDouble(String key, double def)
Double.parseDouble(String)
によって整数に変換されます。キーに関連付けられている値がない場合、バッキング・ストアが利用できない場合、または関連付けられている値が渡されたときにDouble.parseDouble(String)がNumberFormatException
をスローした場合は、指定されたデフォルトを返します。このメソッドは、putDouble(java.lang.String, double)
と組み合わせて使用します。
この実装が格納済みデフォルトをサポートし、格納済みデフォルトが存在してアクセス可能であり、Double.parseDoubleによってdoubleに変換できる場合は、指定されたデフォルトに優先してこのdoubleが返されます。
key
- 関連付けられている値がdoubleとして返されるキー。def
- この設定ノードがkeyに関連付けられている値を持たないか、関連付けられている値をdoubleとして解釈できないか、あるいはバッキング・ストアにアクセスできない場合に返すべき値。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。NullPointerException
- keyがnullである場合。putDouble(String,double)
, get(String,String)
public abstract void putByteArray(String key, byte[] value)
getByteArray(java.lang.String, byte[])
と組み合わせて使用します。key
- 文字列形式の値が関連付けられるキー。value
- キーに関連付けられる文字列形式の値。NullPointerException
- キーまたは値がnullである場合。IllegalArgumentException
- key.length()がMAX_KEY_LENGTHを超える場合、またはvalue.lengthがMAX_VALUE_LENGTH*3/4を超える場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。getByteArray(String,byte[])
, get(String,String)
public abstract byte[] getByteArray(String key, byte[] def)
putByteArray(java.lang.String, byte[])
と組み合わせて使用します。
キーに関連付けられる値がない場合、バッキング・ストアが利用できない場合、または関連付けられている値がBase64でエンコードされた有効なbyte配列(上の定義を参照)でない場合は、指定されたデフォルトを返します。
この実装が格納済みデフォルトをサポートし、格納済みデフォルトが存在してアクセス可能であり、格納済みデフォルトがBase64でエンコードされた有効なbyte配列(上記の定義どおり)である場合は、指定されたデフォルトに優先して使用されます。そうでない場合は、指定されたデフォルトが使用されます。
key
- 関連付けられている値がbyte配列として返されるキー。def
- この設定ノードがkeyに関連付けられている値を持たないか、関連付けられている値をバイト配列として解釈できないか、あるいはバッキング・ストアにアクセスできない場合に返すべき値。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。NullPointerException
- keyがnullである場合。(defにはnull値を指定できる。)get(String,String)
, putByteArray(String,byte[])
public abstract String[] keys() throws BackingStoreException
この実装が格納済みデフォルトをサポートし、このノードに格納済みデフォルトがあり、明示的な設定によってオーバーライドされていない場合は、明示的な設定と格納済みデフォルトが配列に返されます。
BackingStoreException
- バッキング・ストアで障害が発生したかストアとの通信が行えないために、このオペレーションを完了できない場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。public abstract String[] childrenNames() throws BackingStoreException
BackingStoreException
- バッキング・ストアで障害が発生したかストアとの通信が行えないために、このオペレーションを完了できない場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。public abstract Preferences parent()
IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。public abstract Preferences node(String pathName)
返されるノードがこの呼出し以前に存在しなかった場合、この呼出しによって作成されたノードとその上位ノードは、返されるノード(あるいはその上位ノードまたは下位ノード)上でflushメソッドが呼び出されたときに、持続的になります。
pathName
- 返される設定ノードのパス名。IllegalArgumentException
- パス名が無効である場合(つまり、パス名に連続した複数のスラッシュ文字が含まれているか、パス名がスラッシュ文字で終わっていてその長さが2文字以上の場合)。NullPointerException
- パス名がnullである場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。flush()
public abstract boolean nodeExists(String pathName) throws BackingStoreException
このノード(または上位ノード)がremoveNode()
メソッドによってすでに削除されている場合は、パス名が「」のときにだけこのメソッドの呼出しが正当になり、falseを返します。つまり、イディオムp.nodeExists("")は、pが削除されているかどうかをテストする場合に使用できます。
pathName
- 存在が確認されるノードのパス名。BackingStoreException
- バッキング・ストアで障害が発生したかストアとの通信が行えないために、このオペレーションを完了できない場合。IllegalArgumentException
- パス名が無効である場合(つまり、パス名に連続した複数のスラッシュ文字が含まれているか、パス名がスラッシュ文字で終わっていてその長さが2文字以上の場合)。NullPointerException
- パス名がnullである場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されており、pathNameが空の文字列(「」)でない場合。public abstract void removeNode() throws BackingStoreException
name()
、absolutePath()
、isUserNode()
、flush()
、またはnodeExists("")
以外のすべてのメソッドを試みると、IllegalStateExceptionで失敗します。Object
に定義されたメソッドは、ノードが削除されたあとでも呼び出すことができ、IllegalStateExceptionはスローされません。
この削除は、このノード(または上位ノード)上でflushメソッドを呼び出したときに、永続的になります。
この実装が格納済みデフォルトをサポートしている場合は、ノードを削除すると、このノードまたはその下位ノードに格納済みデフォルトが使用されます。つまり、それ以降にこのノードのパス名上でnodeExistsを呼び出すと、trueが返されます。また、nodeを呼び出すと、設定または子、あるいはその両方の空でないコレクションを表す(別の) Preferencesインスタンスが返されます。
BackingStoreException
- バッキング・ストアで障害が発生したかストアとの通信が行えないために、このオペレーションを完了できない場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによってすでに削除されている場合。UnsupportedOperationException
- このメソッドがルート・ノード上で呼び出された場合。flush()
public abstract String name()
public abstract String absolutePath()
public abstract boolean isUserNode()
public abstract String toString()
public abstract void flush() throws BackingStoreException
この実装を使用すれば、任意のタイミングで永続ストアに変更をフラッシュできます。このメソッドが呼び出されるまで待機する必要はありません。
新しく作成されたノードでフラッシュが発生すると、そのノードが永続的になり、まだ永続的になっていない上位ノード(および下位ノード)も永続的になります。ただし、上位ノードに対する設定値の変更は、永続的になりません。
このメソッドを、removeNode()
メソッドを使用して削除されたノード上で呼び出すと、flushSpi()がこのノード上で呼び出されますが、ほかのノードでは呼び出されません。
BackingStoreException
- バッキング・ストアで障害が発生したかストアとの通信が行えないために、このオペレーションを完了できない場合。sync()
public abstract void sync() throws BackingStoreException
BackingStoreException
- バッキング・ストアで障害が発生したかストアとの通信が行えないために、このオペレーションを完了できない場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。flush()
public abstract void addPreferenceChangeListener(PreferenceChangeListener pcl)
removeNode()
メソッドでは生成されません。このメソッドでは、ノード変更イベントが生成されます。設定変更イベントはclearメソッドによって生成されます。
ノード変更イベントは、登録されたリスナーと同じJVM内で変更が行われたときにだけ、生成されます。ただし、一部の実装では、現在のJVMの外部で行われた変更に対して、イベントが生成されることがあります。イベントが生成された時点で、変更が永続的になっていないことがあります。現在のノードの下位ノードで設定が変更されたときは、イベントは生成されません。そのようなイベントが必要な場合は、そのノードを登録する必要があります。
pcl
- 追加する設定変更リスナー。NullPointerException
- pclがnullである場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。removePreferenceChangeListener(PreferenceChangeListener)
, addNodeChangeListener(NodeChangeListener)
public abstract void removePreferenceChangeListener(PreferenceChangeListener pcl)
pcl
- 削除する設定変更リスナー。IllegalArgumentException
- pclがこのノード上で登録された設定変更リスナーではなかった場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。addPreferenceChangeListener(PreferenceChangeListener)
public abstract void addNodeChangeListener(NodeChangeListener ncl)
removeNode()
呼出しによって、複数のノード変更イベントが、削除されたノードをルートとするサブツリー内の各ノードに1つずつ生成されます。)
ノード変更イベントは、登録されたリスナーと同じJVM内で変更が行われたときにだけ、生成されます。ただし、一部の実装では、現在のJVMの外部で行われた変更に対して、イベントが生成されることがあります。イベントが生成された時点で、変更が持続的になっていないことがあります。現在のノードの配下にない下位ノードが追加または削除されたときは、イベントは生成されません。そのようなイベントが必要な場合は、そのノードを登録する必要があります。
作成されたノードは、ただちに有効になりません。これらのノードは、アクセスされたときに暗黙的に作成されます。このため、アクセスされる前に、子ノードがバッキング・ストアに存在するかどうかを実装が判断できない場合があります(たとえば、バッキング・ストアが到達不能な場合や、キャッシュされた情報が最新でない場合など)。このような状況でのノード変更イベントの生成は、特に定義されていません。
ncl
- 追加するNodeChangeListener。NullPointerException
- nclがnullである場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。removeNodeChangeListener(NodeChangeListener)
, addPreferenceChangeListener(PreferenceChangeListener)
public abstract void removeNodeChangeListener(NodeChangeListener ncl)
ncl
- 削除するNodeChangeListener。IllegalArgumentException
- nclがこのノード上で登録されたNodeChangeListenerではなかった場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。addNodeChangeListener(NodeChangeListener)
public abstract void exportNode(OutputStream os) throws IOException, BackingStoreException
このXMLドキュメントでは、次のDOCTYPEが宣言されます。
<!DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">
UTF-8文字エンコーディングが使用されます。
このメソッドは通常のルールと異なり、このクラスの複数のメソッドを並行して実行すると、逐次実行した場合と同じ結果が生成されます。このメソッドの1回の呼出しでこのノードの設定が並行して変更された場合、エクスポートされた設定がこのノードに含まれる設定と一致していないことがあります。つまり、並行して行われた変更は、エクスポートされたデータに反映されていないことがあります。
os
- XMLドキュメントの発行先の出力ストリーム。IOException
- 指定された出力ストリームへの書込み時にIOExceptionが発生した場合。BackingStoreException
- 設定データがバッキング・ストアから読み取れない場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。importPreferences(InputStream)
public abstract void exportSubtree(OutputStream os) throws IOException, BackingStoreException
このXMLドキュメントでは、次のDOCTYPEが宣言されます。
<!DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">
UTF-8文字エンコーディングが使用されます。
このメソッドは通常のルールと異なり、このクラスの複数のメソッドを並行して実行すると、逐次実行した場合と同じ結果が生成されます。このメソッドの1回の呼出しでこのノードをルートとするサブツリーの設定またはノードが並行して変更された場合、エクスポートされた設定がサブツリーと一致していないことがあります。つまり、並行して行われた変更は、エクスポートされたデータに反映されていないことがあります。
os
- XMLドキュメントの発行先の出力ストリーム。IOException
- 指定された出力ストリームへの書込み時にIOExceptionが発生した場合。BackingStoreException
- 設定データがバッキング・ストアから読み取れない場合。IllegalStateException
- このノード(または上位ノード)がremoveNode()
メソッドによって削除されている場合。importPreferences(InputStream)
, exportNode(OutputStream)
public static void importPreferences(InputStream is) throws IOException, InvalidPreferencesFormatException
XMLドキュメントには、次のDOCTYPE宣言が必要です。
<!DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">
このメソッドは、exportNode(OutputStream)
およびexportSubtree(OutputStream)
と組み合わせて使用するように設計されています。
このメソッドは通常のルールと異なり、このクラスの複数のメソッドを並行して実行すると、逐次実行した場合と同じ結果が生成されます。このメソッドを実行すると、このクラスのほかのpublicメソッド(node(String)
、put(String, String)
など)をオーバーライドして実装した場合と同じ結果が生成されます。
is
- XMLドキュメントの読込み元の入力ストリーム。IOException
- 指定された入力ストリームからの読込み時にIOExceptionが発生した場合。InvalidPreferencesFormatException
- 入力ストリーム上のデータが、要求されたドキュメント型を持つ有効なXMLドキュメントにならない場合。SecurityException
- セキュリティ・マネージャが存在し、それがRuntimePermission("preferences")を拒否した場合。RuntimePermission
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.