JavaTM Platform
Standard Ed. 6

java.util.prefs
클래스 Preferences

java.lang.Object 
  상위를 확장 java.util.prefs.Preferences
직계의 기존의 서브 클래스:
AbstractPreferences


public abstract class Preferences
extends Object

설정 데이터의 계층적인 집합안의 1 개의 노드입니다. 이 클래스를 사용해, 어플리케이션으로부터 사용자 및 시스템의 설정 데이터와 구성 데이터를 포함 및 취득할 수 있습니다. 이 데이터는, 구현 마다 다른 배킹 스토어에 지속적으로 보존됩니다. 예를 들어, 플랫 파일, OS 고유의 레지스트리, 디렉토리 서버, SQL 데이타베이스등의 배킹 스토어에 포함됩니다. 이 클래스를 사용할 경우에, 배킹 스토어의 상세를 파악하고 있을 필요는 없습니다.

설정 노드는 2 개의 개별의 트리로 구성됩니다. 한편은 사용자 설정용, 이제(벌써) 한편은 시스템 설정용입니다. 각각의 사용자는 개개의 사용자 설정 트리를 가져, 그 시스템의 모든 사용자는 시스템 설계 트리를 가집니다. 사용자 설정 트리와 시스템 설정 트리의 정의는, 구현 마다 다릅니다. 사용자 설정 트리에는, 폰트 선택, 칼라 선택, 특정의 어플리케이션으로 설정한 윈도우 위치나 사이즈등이 포함됩니다. 시스템 설정 트리에는, 어플리케이션의 인스톨 구성 데이터등이 포함됩니다.

설정 트리내의 노드에는, 계층 파일 시스템의 디렉토리와 같은 방법으로 이름을 붙일 수 있습니다. 설정 트리의 각 노드에는, 「노드명 (일의일 필요는 없다)」, 일의의 「절대 경로명」, 및 각 상위 노드 (그 노드 자체를 포함한다)를 기점으로 한 상대 경로명을 할당할 수 있습니다.

루트 노드의 노드명은, 빈 상태(empty)의 캐릭터 라인 ("")입니다. 다른 노드의 이름은, 작성시에 임의로 지정할 수 있습니다. 노드명에는 임의의 문자를 사용할 수 있습니다만, 빈 상태(empty)의 캐릭터 라인은 지정하지 못하고, slash 문자 ('/')는 사용할 수 없습니다.

루트 노드의 절대 경로명은,"/" 입니다. 루트 노드의 아이의 절대 경로명은,"/" + <노드명 > 가 됩니다. 그 외의 노드의 절대 경로명은, <부모의 절대 경로명 > + "/" + <노드명 > 가 됩니다. 절대 경로명은, 항상 slash 문자로부터 시작됩니다.

노드 n 의 상대 경로명은, 상위 노드 a 를 기점으로 했을 경우,n 의 절대 경로명을 작성할 경우에 a 의 절대 경로명에 추가되는 캐릭터 라인이 됩니다. 선두에 slash 문자가 있는 경우는, 삭제합니다. 다음의 점에 주의해 주세요.

다음의 점에도 주의해 주세요.

설정 데이터를 변경하는 메소드는 모두, 비동기에게 실행할 수 있습니다. 즉, 실행 후는 즉시 복귀해, 변경은 구현에 의존한 지연이 경과하고 나서 지속 배킹 스토어에 보내집니다. flush 메소드는, 갱신 데이터를 배킹 스토어에 강제적으로 기입해, 동기를 잡을 때 사용합니다. Java 가상 머신이 정상 종료해도, 보류중의 갱신은 없어지지 않습니다. 이 때문에, 종료시에 명시적으로 flush 를 호출해, 보류중의 갱신을 보관 유지할 필요는 없습니다.

Preferences 객체로부터 설정을 읽어들일 때는, 디폴트 값를 지정해 메소드를 호출할 필요가 있습니다. 읽어들이기 전에 값이 설정되어 있지 않았던 경우 또는 배킹 스토어를 이용할 수 없는 경우는, 그 디폴트 값가 돌려주어집니다. 이것은, 배킹 스토어를 이용할 수 없게 되었을 경우에서도, 어플리케이션을 동작할 수 있도록(듯이) 하기 (위해)때문에입니다 (다만, 기능이 조금 저하한다). 일부의 메소드 (flush 등)의 시멘틱스에서는, 배킹 스토어를 이용할 수 없는 경우에 어플리케이션이 동작하지 않게 됩니다. 일반적으로의 어플리케이션에서는, 이러한 메소드를 호출할 필요가 없습니다. 이러한 메소드는,BackingStoreException 의 throw를 선언하고 있는 어플리케이션으로 사용합니다.

이 클래스의 메소드는, 1 개의 JVM 의 복수의 thread로부터 병행해 호출할 수가 있습니다. 이 때, 외부적으로 동기화할 필요는 없습니다. 실행 결과는, 순서대로 실행했을 경우와 등가입니다. 복수의 JVM 로 이 클래스를 병행해 사용해, 같은 배킹 스토어로 설정 데이터를 포함했을 경우, 데이터 스토어는 파괴됩니다만, 설정 데이터의 무결성은 보증되지 않습니다.

이 클래스에는, export/임포트 기능이 있어, 설정을 XML 문서에 「export」하거나 설정이 기술된 XML 문서를 시스템에 「임포트」할 수가 있습니다. 이 기능은, 설정 트리의 모두 또는 일부를 백업 해, 그 백업을 복원할 때 사용합니다.

이 XML 문서에서는, 다음의 DOCTYPE 가 선언됩니다.

 <! DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">
 
설정을 export/임포트 할 경우에, 시스템 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 의 구현은 다음과 같이 실시됩니다.

  1. 시스템 프로퍼티 java.util.prefs.PreferencesFactory 가 정의되고 있는 경우, 이것이 클래스를 구현하는 PreferencesFactory 인터페이스의 완전 수식명으로 보여집니다. 그 후, 클래스가 로드 되어 인스턴스가 작성됩니다.

  2. 시스템 클래스 로더 의 인식하는 jar 파일에 PreferencesFactory 구현 클래스 파일이 인스톨 되고 있어, 이 jar 파일에 자원 디렉토리 META-INF/services 내의 프로바이더 구성 파일 java.util.prefs.PreferencesFactory 가 포함되어 있는 경우, 이 파일로 지정되고 있는 최초의 클래스명이 사용됩니다. 이러한 jar 파일이 2 개 이상 지정되었을 경우는, 최초로 검출된 파일이 사용됩니다. 그 후, 클래스가 로드 되어 인스턴스가 작성됩니다.

  3. 이 처리에 실패했을 경우는, 상세 불명 에러가 throw 됩니다. 마지막으로, 전술의 시스템 프로퍼티과 확장 jar 파일의 어느쪽이나 지정되어 있지 않은 경우는, 그 때 사용되고 있는 플랫폼에 대해서 시스템 와이드의 디폴트인 PreferencesFactory 구현이 로드 되어 인스턴스가 작성됩니다.

도입된 버젼:
1.4

필드의 개요
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 를 돌려줍니다.
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 ()
          이 설정 노드의 캐릭터 라인 표현을 돌려줍니다.
static Preferences userNodeForPackage (Class <? > c)
          호출측 사용자의 설정 트리로부터 설정 노드를 돌려줍니다.
static Preferences userRoot ()
          호출측 사용자 루트 설정 노드를 돌려줍니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , wait , wait , wait
 

필드의 상세

MAX_KEY_LENGTH

public static final int MAX_KEY_LENGTH
키로서 사용할 수 있는 캐릭터 라인의 최대 길이 (80 문자)입니다.

관련 항목:
정수 필드치

MAX_VALUE_LENGTH

public static final int MAX_VALUE_LENGTH
값으로 해서 사용할 수 있는 캐릭터 라인의 최대 길이 (8192 문자)입니다.

관련 항목:
정수 필드치

MAX_NAME_LENGTH

public static final int MAX_NAME_LENGTH
노드명의 최대 길이 (80 문자)입니다.

관련 항목:
정수 필드치
생성자 의 상세

Preferences

protected Preferences()
유일한 생성자 입니다. 서브 클래스의 생성자 에 의한 호출용으로, 일반적으로은 암묵적으로 불려 갑니다.

메소드의 상세

userNodeForPackage

public static Preferences  userNodeForPackage(Class <? > c)
호출측 사용자의 설정 트리로부터 설정 노드를 돌려줍니다. 이 사용자 설정 트리는, 규칙에 따라, 지정된 클래스의 패키지에 관련지을 수 있고 있습니다. 즉, 노드의 절대 경로명은, 완전 지정의 패키지명으로, slash ('/')로 시작되어, 피리어드 ('. ')는 slash로 옮겨집니다. 예를 들어,com.acme.widget.Foo 클래스에 관련지을 수 있었던 노드의 절대 경로명은,/com/acme/widget 가 됩니다.

이 규칙은, 이름 없음의 패키지에는 적용되지 않습니다. 이름 없음의 패키지에 관련지을 수 있었던 설정 노드는,<unnamed> 가 됩니다. 이 노드는, 장기간의 사용에는 적합하지 않습니다만, 패키지에 아직 속하지 않은 개발 초기 단계의 프로그램이나 일회용의 프로그램으로 사용할 수 있습니다. 다만, 중요한 데이터는 이 노드에 포함하지 말아 주세요. 이 노드를 사용하는 모든 프로그램이 데이터를 공유하기 (위해)때문에입니다.

Foo 클래스를 사용해 이름 없음의 패키지에 관한 설정에 액세스 하려면 , 다음의 방법으로 설정 노드를 가져옵니다.

    static Preferences prefs = Preferences.userNodeForPackage(Foo.class);
 
이 관용어를 사용하면, 캐릭터 라인을 사용해 설정 노드를 기술할 필요가 없어지기 (위해)때문에, 실행시에 에러가 발생할 가능성이 줄어듭니다. (클래스명의 철을 틀렸을 경우는 일반적으로, 컴파일시에 에러가 발생한다. )

이 메소드를 호출했을 때에, 반환되는 노드와 게다가 위노드가 존재하지 않았던 경우는, 그러한 노드가 작성됩니다. 반환되는 노드가 이 호출 이전에 존재하지 않았던 경우, 이 호출에 의해 작성된 노드와 게다가 위노드는, 반환되는 노드 (혹은 게다가 위노드 또는 하위 노드) 상에서 flush 메소드가 불려 갔을 때에, 지속적이 됩니다.

파라미터:
c - 사용자 설정 노드를 필요로 하는 패키지의 클래스
반환값:
c 가 멤버가 되어 있는 패키지에 관련지을 수 있었던 사용자 설정 노드
예외:
NullPointerException - cnull 의 경우
SecurityException - 시큐리티 매니저가 존재해, 그것이 RuntimePermission("preferences") 를 거부했을 경우
관련 항목:
RuntimePermission

systemNodeForPackage

public static Preferences  systemNodeForPackage(Class <? > c)
시스템 설정 트리로부터 설정 노드를 돌려줍니다. 이 시스템 설정 트리는, 규칙에 따라, 지정된 클래스의 패키지에 관련지을 수 있고 있습니다. 이 사용자 설정 트리는, 규칙에 따라, 지정된 클래스의 패키지에 관련지을 수 있고 있습니다. 즉, 노드의 절대 경로명은, 완전 지정의 패키지명으로, slash ('/')로 시작되어, 피리어드 ('. ')는 slash로 옮겨집니다. 예를 들어,com.acme.widget.Foo 클래스에 관련지을 수 있었던 노드의 절대 경로명은,/com/acme/widget 가 됩니다.

이 규칙은, 이름 없음의 패키지에는 적용되지 않습니다. 이름 없음의 패키지에 관련지을 수 있었던 설정 노드는,<unnamed> 가 됩니다. 이 노드는, 장기간의 사용에는 적합하지 않습니다만, 패키지에 아직 속하지 않은 개발 초기 단계의 프로그램이나 일회용의 프로그램으로 사용할 수 있습니다. 다만, 중요한 데이터는 이 노드에 포함하지 말아 주세요. 이 노드를 사용하는 모든 프로그램이 데이터를 공유하기 (위해)때문에입니다.

Foo 클래스를 사용해 이름 없음의 패키지에 관한 설정에 액세스 하려면 , 다음의 방법으로 설정 노드를 가져옵니다.

    static Preferences prefs = Preferences.systemNodeForPackage(Foo.class);
 
이 관용어를 사용하면, 캐릭터 라인을 사용해 설정 노드를 기술할 필요가 없어지기 (위해)때문에, 실행시에 에러가 발생할 가능성이 줄어듭니다. (클래스명의 철을 틀렸을 경우는 일반적으로, 컴파일시에 에러가 발생한다. )

이 메소드를 호출했을 때에, 반환되는 노드와 게다가 위노드가 존재하지 않았던 경우는, 그러한 노드가 작성됩니다. 반환되는 노드가 이 호출 이전에 존재하지 않았던 경우, 이 호출에 의해 작성된 노드와 게다가 위노드는, 반환되는 노드 (혹은 게다가 위노드 또는 하위 노드) 상에서 flush 메소드가 불려 갔을 때에, 지속적이 됩니다.

파라미터:
c - 시스템 설정 노드를 필요로 하는 패키지의 클래스
반환값:
c 가 멤버가 되어 있는 패키지에 관련지을 수 있었던 시스템 설정 노드
예외:
NullPointerException - cnull 의 경우
SecurityException - 시큐리티 매니저가 존재해, 그것이 RuntimePermission("preferences") 를 거부했을 경우
관련 항목:
RuntimePermission

userRoot

public static Preferences  userRoot()
호출측 사용자 루트 설정 노드를 돌려줍니다.

반환값:
호출측 사용자 루트 설정 노드
예외:
SecurityException - 시큐리티 매니저가 존재해, 그것이 RuntimePermission("preferences") 를 거부했을 경우
관련 항목:
RuntimePermission

systemRoot

public static Preferences  systemRoot()
시스템의 루트 설정 노드를 돌려줍니다.

반환값:
시스템의 루트 설정 노드
예외:
SecurityException - 시큐리티 매니저가 존재해, 그것이 RuntimePermission("preferences") 를 거부했을 경우
관련 항목:
RuntimePermission

put

public abstract void put(String  key,
                         String  value)
이 설정 노드로 지정된 키에, 지정된 값을 관련짓습니다.

파라미터:
key - 지정된 값을 관련지을 수 있는 키
value - 지정된 키에 관련지을 수 있는 값
예외:
NullPointerException - 키 또는 값이 null 의 경우
IllegalArgumentException - key.length()MAX_KEY_LENGTH 를 넘는 경우, 또는 value.lengthMAX_VALUE_LENGTH 를 넘는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우

get

public abstract String  get(String  key,
                           String  def)
이 설정 노드내의 지정된 키에 관련지을 수 있었던 값을 돌려줍니다. 키에 관련지을 수 있었던 값이 없는 경우 또는 배킹 스토어를 이용할 수 없는 경우는, 지정된 디폴트를 돌려줍니다.

일부의 구현은, 디폴트 값를 그 배킹 스토어에 포함합니다. 지정된 키에 관련지을 수 있었던 값이 없는 경우에서도, 「포함이 끝난 디폴트」가 있는 경우는, 지정된 디폴트에 우선해 포함이 끝난 디폴트가 돌려주어집니다.

파라미터:
key - 관련지을 수 있었던 값이 반환되는 키
def - 이 설정 노드를 key 에 관련지을 수 있었던 값을 가지지 않는 경우에 돌려주어야 할 값
반환값:
key 에 관련지을 수 있었던 값. key 에 관련지을 수 있었던 값이 존재하지 않는지, 배킹 스토어에 액세스 할 수 없는 경우는 def
예외:
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
NullPointerException - keynull 의 경우 (def 에는 null 치를 지정할 수 있다. )

remove

public abstract void remove(String  key)
이 설정 노드내의 지정된 키에 관련지을 수 있었던 값이 있는 경우는, 그것을 삭제합니다.

이 구현이 「포함이 끝난 디폴트」를 지원하고 있어, 지정된 설정에 포함이 끝난 디폴트가 존재하는 경우는, 이 호출에 의해 포함이 끝난 디폴트가 사용되게 됩니다. 즉, 후속의 get 호출에서는 포함이 끝난 디폴트가 돌려주어집니다.

파라미터:
key - 매핑이 설정 노드로부터 삭제되는 키
예외:
NullPointerException - keynull 의 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우

clear

public abstract void clear()
                    throws BackingStoreException 
이 설정 노드내의 설정 (키와 값의 페어가 관련짓고)을 모두 삭제합니다. 이 호출은, 이 노드의 하위 노드에는 적용되지 않습니다.

이 구현이 「포함이 끝난 디폴트」를 지원하고 있어, 설정 계층내의 이 노드에 포함이 끝난 디폴트가 포함되어 있는 경우는, 이 호출에 의해 포함이 끝난 디폴트가 사용되게 됩니다. 즉, 후속의 get 호출에서는 포함이 끝난 디폴트가 돌려주어집니다.

예외:
BackingStoreException - 배킹 스토어에서 장해가 발생했는지 스토어와의 통신을 실시할 수 없기 위해(때문에), 이 오퍼레이션을 완료할 수 없는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
removeNode()

putInt

public abstract void putInt(String  key,
                            int value)
이 설정 노드내의 지정된 키에, 지정된 int 치를 나타내는 캐릭터 라인을 관련짓습니다. 관련지을 수 있는 캐릭터 라인은, int 치가 Integer.toString(int) 에게 건네졌을 경우에 반환되는 값입니다. 이 메소드는,getInt(java.lang.String, int) 와 조합해 사용합니다.

파라미터:
key - 캐릭터 라인 형식의 값을 관련지을 수 있는 키
value - 키에 관련지을 수 있는 캐릭터 라인 형식의 값
예외:
NullPointerException - keynull 의 경우
IllegalArgumentException - key.length()MAX_KEY_LENGTH 를 넘는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
getInt(String, int)

getInt

public abstract int getInt(String  key,
                           int def)
이 설정 노드내의 지정된 키에 관련지을 수 있었던 캐릭터 라인이 나타내는 int 치를 돌려줍니다. 이 캐릭터 라인은,Integer.parseInt(String) 에 의해 정수에 변환됩니다. 키에 관련지을 수 있었던 값이 없는 경우, 배킹 스토어를 이용할 수 없는 경우, 또는 관련지을 수 있었던 값이 건네받았을 때에 Integer.parseInt(String)NumberFormatException 를 throw 했을 경우는, 지정된 디폴트를 돌려줍니다. 이 메소드는,putInt(java.lang.String, int) 와 조합해 사용합니다.

이 구현이 「포함이 끝난 디폴트」를 지원해, 포함이 끝난 디폴트가 존재해 액세스 가능하고,Integer.parseInt 에 의해 int 로 변환할 수 있는 경우는, 지정된 디폴트에 우선해 이 int 가 돌려주어집니다.

파라미터:
key - 관련지을 수 있었던 값이 int 로서 반환되는 키
def - 이 설정 노드를 key 에 관련지을 수 있었던 값을 가지지 않는가, 관련지을 수 있었던 값을 int 로서 해석할 수 없는지, 혹은 배킹 스토어에 액세스 할 수 없는 경우에 돌려주어야 할 값
반환값:
이 설정 노드내의 key 에 관련지을 수 있었던 캐릭터 라인이 나타내는 int 치. 관련지을 수 있었던 값이 존재하지 않는지, 그 값을 int 로서 해석할 수 없는 경우는 def
예외:
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
NullPointerException - keynull 의 경우
관련 항목:
putInt(String, int) , get(String, String)

putLong

public abstract void putLong(String  key,
                             long value)
이 설정 노드내의 지정된 키에, 지정된 long 치를 나타내는 캐릭터 라인을 관련짓습니다. 관련지을 수 있는 캐릭터 라인은, long 치가 Long.toString(long) 에게 건네졌을 경우에 반환되는 값입니다. 이 메소드는,getLong(java.lang.String, long) 와 조합해 사용합니다.

파라미터:
key - 캐릭터 라인 형식의 값을 관련지을 수 있는 키
value - 키에 관련지을 수 있는 캐릭터 라인 형식의 값
예외:
NullPointerException - keynull 의 경우
IllegalArgumentException - key.length()MAX_KEY_LENGTH 를 넘는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
getLong(String, long)

getLong

public abstract long getLong(String  key,
                             long def)
이 설정 노드내의 지정된 키에 관련지을 수 있었던 캐릭터 라인이 나타내는 long 치를 돌려줍니다. 이 캐릭터 라인은,Long.parseLong(String) 에 의해 long 에 변환됩니다. 키에 관련지을 수 있었던 값이 없는 경우, 배킹 스토어를 이용할 수 없는 경우, 또는 관련지을 수 있었던 값이 건네받았을 때에 Long.parseLong(String)NumberFormatException 를 throw 했을 경우는, 지정된 디폴트를 돌려줍니다. 이 메소드는,putLong(java.lang.String, long) 와 조합해 사용합니다.

이 구현이 「포함이 끝난 디폴트」를 지원해, 포함이 끝난 디폴트가 존재해 액세스 가능하고,Long.parseLong 에 의해 long 로 변환할 수 있는 경우는, 지정된 디폴트에 우선해 이 long 가 돌려주어집니다.

파라미터:
key - 관련지을 수 있었던 값이 long 로서 반환되는 키
def - 이 설정 노드를 key 에 관련지을 수 있었던 값을 가지지 않는가, 관련지을 수 있었던 값을 long 로서 해석할 수 없는지, 혹은 배킹 스토어에 액세스 할 수 없는 경우에 돌려주어야 할 값
반환값:
이 설정 노드내의 key 에 관련지을 수 있었던 캐릭터 라인이 나타내는 long 치. 관련지을 수 있었던 값이 존재하지 않는지, 그 값을 long 로서 해석할 수 없는 경우는 def
예외:
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
NullPointerException - keynull 의 경우
관련 항목:
putLong(String, long) , get(String, String)

putBoolean

public abstract void putBoolean(String  key,
                                boolean value)
이 설정 노드내의 지정된 키에, 지정된 boolean 치를 나타내는 캐릭터 라인을 관련짓습니다. 관련지을 수 있는 캐릭터 라인은, 이 값이 true 인 경우는 "true", false 인 경우는 "false" 가 됩니다. 이 메소드는,getBoolean(java.lang.String, boolean) 와 조합해 사용합니다.

파라미터:
key - 캐릭터 라인 형식의 값을 관련지을 수 있는 키
value - 키에 관련지을 수 있는 캐릭터 라인 형식의 값
예외:
NullPointerException - keynull 의 경우
IllegalArgumentException - key.length()MAX_KEY_LENGTH 를 넘는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
getBoolean(String, boolean) , get(String, String)

getBoolean

public abstract boolean getBoolean(String  key,
                                   boolean def)
이 설정 노드내의 지정된 키에 관련지을 수 있었던 캐릭터 라인이 나타내는 boolean 치를 돌려줍니다. 유효한 값은, ture 를 나타내는 "true" 와 false 를 나타내는 "false" 입니다. 대문자와 소문자는 구별되지 않기 때문에,"TRUE""False" 도 유효합니다. 이 메소드는,putBoolean(java.lang.String, boolean) 와 조합해 사용합니다.

키에 관련지을 수 있는 값이 없는 경우, 배킹 스토어를 이용할 수 없는 경우, 또는 관련지을 수 있었던 값이 "true" 또는 "false" (대문자와 소문자는 구별되지 않는다) 이외인 경우는, 지정된 디폴트를 돌려줍니다.

이 구현이 「포함이 끝난 디폴트」를 지원해, 포함이 끝난 디폴트가 존재해 액세스 가능하고, 포함이 끝난 디폴트가 "true" 또는 "false" (대문자와 소문자는 구별되지 않는다)인 경우는, 지정된 디폴트에 우선해 사용됩니다. 그렇지 않은 경우는, 지정된 디폴트가 사용됩니다.

파라미터:
key - 관련지을 수 있었던 값이 boolean 로서 반환되는 키
def - 이 설정 노드를 key 에 관련지을 수 있었던 값을 가지지 않는가, 관련지을 수 있었던 값을 boolean 로서 해석할 수 없는지, 혹은 배킹 스토어에 액세스 할 수 없는 경우에 돌려주어야 할 값
반환값:
이 설정 노드내의 key 에 관련지을 수 있었던 캐릭터 라인이 나타내는 boolean 치. 관련지을 수 있었던 값이 존재하지 않는지, 그 값을 boolean 로서 해석할 수 없는 경우는 def
예외:
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
NullPointerException - keynull 의 경우
관련 항목:
get(String, String) , putBoolean(String, boolean)

putFloat

public abstract void putFloat(String  key,
                              float value)
이 설정 노드내의 지정된 키에, 지정된 float 치를 나타내는 캐릭터 라인을 관련짓습니다. 관련지을 수 있는 캐릭터 라인은, float 치가 Float.toString(float) 에게 건네졌을 경우에 반환되는 값입니다. 이 메소드는,getFloat(java.lang.String, float) 와 조합해 사용합니다.

파라미터:
key - 캐릭터 라인 형식의 값을 관련지을 수 있는 키
value - 키에 관련지을 수 있는 캐릭터 라인 형식의 값
예외:
NullPointerException - keynull 의 경우
IllegalArgumentException - key.length()MAX_KEY_LENGTH 를 넘는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
getFloat(String, float)

getFloat

public abstract float getFloat(String  key,
                               float def)
이 설정 노드내의 지정된 키에 관련지을 수 있었던 캐릭터 라인이 나타내는 float 치를 돌려줍니다. 이 캐릭터 라인은,Float.parseFloat(String) 에 의해 정수에 변환됩니다. 키에 관련지을 수 있었던 값이 없는 경우, 배킹 스토어를 이용할 수 없는 경우, 또는 관련지을 수 있었던 값이 건네받았을 때에 Float.parseFloat(String)NumberFormatException 를 throw 했을 경우는, 지정된 디폴트를 돌려줍니다. 이 메소드는,putFloat(java.lang.String, float) 와 조합해 사용합니다.

이 구현이 「포함이 끝난 디폴트」를 지원해, 포함이 끝난 디폴트가 존재해 액세스 가능하고,Float.parseFloat 에 의해 float 로 변환할 수 있는 경우는, 지정된 디폴트에 우선해 이 float 가 돌려주어집니다.

파라미터:
key - 관련지을 수 있었던 값이 float 로서 반환되는 키
def - 이 설정 노드를 key 에 관련지을 수 있었던 값을 가지지 않는가, 관련지을 수 있었던 값을 float 로서 해석할 수 없는지, 혹은 배킹 스토어에 액세스 할 수 없는 경우에 돌려주어야 할 값
반환값:
이 설정 노드내의 key 에 관련지을 수 있었던 캐릭터 라인이 나타내는 float 치. 관련지을 수 있었던 값이 존재하지 않는지, 그 값을 float 로서 해석할 수 없는 경우는 def
예외:
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
NullPointerException - keynull 의 경우
관련 항목:
putFloat(String, float) , get(String, String)

putDouble

public abstract void putDouble(String  key,
                               double value)
이 설정 노드내의 지정된 키에, 지정된 double 치를 나타내는 캐릭터 라인을 관련짓습니다. 관련지을 수 있는 캐릭터 라인은, double 치가 Double.toString(double) 에게 건네졌을 경우에 반환되는 값입니다. 이 메소드는,getDouble(java.lang.String, double) 와 조합해 사용합니다.

파라미터:
key - 캐릭터 라인 형식의 값을 관련지을 수 있는 키
value - 키에 관련지을 수 있는 캐릭터 라인 형식의 값
예외:
NullPointerException - keynull 의 경우
IllegalArgumentException - key.length()MAX_KEY_LENGTH 를 넘는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
getDouble(String, double)

getDouble

public abstract double getDouble(String  key,
                                 double def)
이 설정 노드내의 지정된 키에 관련지을 수 있었던 캐릭터 라인이 나타내는 double 치를 돌려줍니다. 이 캐릭터 라인은,Double.parseDouble(String) 에 의해 정수에 변환됩니다. 키에 관련지을 수 있었던 값이 없는 경우, 배킹 스토어를 이용할 수 없는 경우, 또는 관련지을 수 있었던 값이 건네받았을 때에 Double.parseDouble(String)NumberFormatException 를 throw 했을 경우는, 지정된 디폴트를 돌려줍니다. 이 메소드는,putDouble(java.lang.String, double) 와 조합해 사용합니다.

이 구현이 「포함이 끝난 디폴트」를 지원해, 포함이 끝난 디폴트가 존재해 액세스 가능하고,Double.parseDouble 에 의해 double 로 변환할 수 있는 경우는, 지정된 디폴트에 우선해 이 double 가 돌려주어집니다.

파라미터:
key - 관련지을 수 있었던 값이 double 로서 반환되는 키
def - 이 설정 노드를 key 에 관련지을 수 있었던 값을 가지지 않는가, 관련지을 수 있었던 값을 double 로서 해석할 수 없는지, 혹은 배킹 스토어에 액세스 할 수 없는 경우에 돌려주어야 할 값
반환값:
이 설정 노드내의 key 에 관련지을 수 있었던 캐릭터 라인이 나타내는 double 치. 관련지을 수 있었던 값이 존재하지 않는지, 그 값을 double 로서 해석할 수 없는 경우는 def
예외:
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
NullPointerException - keynull 의 경우
관련 항목:
putDouble(String, double) , get(String, String)

putByteArray

public abstract void putByteArray(String  key,
                                  byte[] value)
이 설정 노드내의 지정된 키에, 지정된 byte 배열을 나타내는 캐릭터 라인을 관련짓습니다. 관련짓는 값은,Base64 로 encode 된 byte 배열입니다. 이것에 대해서는,RFC 2045 의 6.8 항에 정의되고 있습니다. 다만, 이 캐릭터 라인은 Base64 Alphabet 의 문자만으로 구성해, 개행 문자를 포함할 수가 없습니다. 또, Base64 로 encode 된 캐릭터 라인이 MAX_VALUE_LENGTH 를 넘지 않게, byte 배열의 최대 길이이 MAX_VALUE_LENGTH 의 4 분의 3 에 제한되고 있습니다. 이 메소드는,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)

getByteArray

public abstract byte[] getByteArray(String  key,
                                    byte[] def)
이 설정 노드내의 지정된 키에 관련지을 수 있었던 캐릭터 라인이 나타내는 byte 배열치를 돌려줍니다. 유효한 캐릭터 라인은,Base64 로 encode 된 바이너리 데이터입니다. 이것에 대해서는,RFC 2045 의 6.8 항에 정의되고 있습니다. 다만, 이 캐릭터 라인은 Base64 Alphabet 의 문자만으로 구성해, 이외의 문자나 개행 문자는 사용할 수 없습니다. 이 메소드는,putByteArray(java.lang.String, byte[]) 과 조합해 사용합니다.

키에 관련지을 수 있는 값이 없는 경우, 배킹 스토어를 이용할 수 없는 경우, 또는 관련지을 수 있었던 값이 Base64 로 encode 된 유효한 byte 배열 (위의 정의를 참조)이 아닌 경우는, 지정된 디폴트를 돌려줍니다.

이 구현이 「포함이 끝난 디폴트」를 지원해, 포함이 끝난 디폴트가 존재해 액세스 가능하고, 포함이 끝난 디폴트가 Base64 로 encode 된 유효한 byte 배열 (상기의 정의 대로)인 경우는, 지정된 디폴트에 우선해 사용됩니다. 그렇지 않은 경우는, 지정된 디폴트가 사용됩니다.

파라미터:
key - 관련지을 수 있었던 값이 byte 배열로서 반환되는 키
def - 이 설정 노드를 key 에 관련지을 수 있었던 값을 가지지 않는가, 관련지을 수 있었던 값을 byte 배열로서 해석할 수 없는지, 혹은 배킹 스토어에 액세스 할 수 없는 경우에 돌려주어야 할 값
반환값:
이 설정 노드내의 key 에 관련지을 수 있었던 캐릭터 라인이 나타내는 byte 배열치. 관련지을 수 있었던 값이 존재하지 않는지, 그 값을 byte 배열로서 해석할 수 없는 경우는 def
예외:
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
NullPointerException - keynull 의 경우 (def 에는 null 치를 지정할 수 있다. )
관련 항목:
get(String, String) , putByteArray(String, byte[])

keys

public abstract String [] keys()
                       throws BackingStoreException 
이 설정 노드내에 관련지을 수 있었던 값을 가지는 키를 모두 돌려줍니다. 이 노드로 설정이 없는 경우, 반환되는 배열의 사이즈는 제로가 됩니다.

이 구현이 「포함이 끝난 디폴트」를 지원해, 이 노드에 포함이 끝난 디폴트가 있어, 명시적인 설정에 의해 오버라이드(override)되어 있지 않은 경우는, 명시적인 설정과 포함이 끝난 디폴트가 배열에 돌려주어집니다.

반환값:
이 설정 노드내에 관련지을 수 있었던 값을 가지는 키의 배열
예외:
BackingStoreException - 배킹 스토어에서 장해가 발생했는지 스토어와의 통신을 실시할 수 없기 위해(때문에), 이 오퍼레이션을 완료할 수 없는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우

childrenNames

public abstract String [] childrenNames()
                                throws BackingStoreException 
이 설정 노드의 아이의 이름 (이 노드를 기점으로 한 상대명)을 돌려줍니다. 이 노드에 아이가 없는 경우, 반환되는 배열의 사이즈는 제로가 됩니다.

반환값:
이 설정 노드의 아이의 이름
예외:
BackingStoreException - 배킹 스토어에서 장해가 발생했는지 스토어와의 통신을 실시할 수 없기 위해(때문에), 이 오퍼레이션을 완료할 수 없는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우

parent

public abstract Preferences  parent()
이 설정 노드의 부모를 돌려주어, 이 노드가 루트의 경우는 null 를 돌려줍니다.

반환값:
이 설정 노드의 부모
예외:
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우

node

public abstract Preferences  node(String  pathName)
이 노드와 같은 트리에 있는 이름 첨부 설정 노드를 돌려줍니다. 이 노드와 게다가 위노드가 존재하지 않는 경우는, 그것들을 모두 작성합니다. 상대 경로명 또는 절대 경로명을 받아들입니다. 상대 경로명 (slash 문자 ('/') 로 시작되지 않는 경로명)는, 이 설정 노드를 기점으로서 해석됩니다.

반환되는 노드가 이 호출 이전에 존재하지 않았던 경우, 이 호출에 의해 작성된 노드와 게다가 위노드는, 반환되는 노드 (혹은 게다가 위노드 또는 하위 노드) 상에서 flush 메소드가 불려 갔을 때에, 지속적이 됩니다.

파라미터:
pathName - 반환되는 설정 노드의 경로명
반환값:
지정된 설정 노드
예외:
IllegalArgumentException - 경로명이 무효인 경우 (즉, 경로명에 연속한 복수의 slash 문자가 포함되어 있는지, 경로명이 slash 문자로 끝나 있어 그 길이가 2 문자 이상의 경우)
NullPointerException - 경로명이 null 의 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
flush()

nodeExists

public abstract boolean nodeExists(String  pathName)
                            throws BackingStoreException 
이름 첨부 설정 노드가 이 노드와 같은 트리에 존재하는 경우는, true 를 돌려줍니다. 상대 경로명 (slash 문자 ('/') 로 시작되지 않는 경로명)는, 이 설정 노드를 기점으로서 해석됩니다.

이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 벌써 삭제되고 있는 경우는, 경로명이 "" 때에만 이 메소드의 호출이 정당하게 되어,false 를 돌려줍니다. 즉, 관용어 p.nodeExists("") 는,p 가 삭제되고 있는지 어떤지를 테스트하는 경우에 사용합니다.

파라미터:
pathName - 존재가 확인되는 노드의 경로명
반환값:
지정된 노드가 존재하는 경우에 true
예외:
BackingStoreException - 배킹 스토어에서 장해가 발생했는지 스토어와의 통신을 실시할 수 없기 위해(때문에), 이 오퍼레이션을 완료할 수 없는 경우
IllegalArgumentException - 경로명이 무효인 경우 (즉, 경로명에 연속한 복수의 slash 문자가 포함되어 있는지, 경로명이 slash 문자로 끝나 있어 그 길이가 2 문자 이상의 경우)
NullPointerException - 경로명이 null 의 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되고 있어pathName 가 빈 상태(empty)의 캐릭터 라인 (「」)이 아닌 경우

removeNode

public abstract void removeNode()
                         throws BackingStoreException 
이 설정 노드와 그 하위 노드를 모두 삭제해, 삭제한 노드에 포함되어 있는 설정을 모두 무효로 합니다. 노드가 삭제된 후에, 대응하는 Preferences 인스턴스상에서 name() ,absolutePath() ,isUserNode() ,flush() ,nodeExists("") 이외의 메소드를 호출하면(자), 모두 실패해 IllegalStateException 가 throw 됩니다. Object 에 정의된 메소드는, 노드가 삭제된 후에도 호출할 수가 있어IllegalStateException 는 throw 되지 않습니다.

이 삭제는, 이 노드 (또는 상위 노드) 상에서 flush 메소드를 호출했을 때에, 지속적이 됩니다.

이 구현이 「포함이 끝난 디폴트」를 지원하고 있는 경우는, 노드를 삭제하면(자), 이 노드 또는 그 하위 노드에 포함이 끝난 디폴트가 사용됩니다. 즉, 그 이후에 이 노드의 경로명상에서 nodeExists 를 호출하면(자),true 가 돌려주어집니다. 또,node 를 호출하면(자), 설정 또는 아이, 혹은 그 양쪽 모두의 빈 상태(empty)이 아닌 컬렉션을 나타내는 (다른) Preferences 인스턴스가 돌려주어집니다.

예외:
BackingStoreException - 배킹 스토어에서 장해가 발생했는지 스토어와의 통신을 실시할 수 없기 위해(때문에), 이 오퍼레이션을 완료할 수 없는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 벌써 삭제되고 있는 경우
UnsupportedOperationException - 이 메소드가 루트 노드상에서 불려 갔을 경우
관련 항목:
flush()

name

public abstract String  name()
이 설정 노드의 이름 (그 부모를 기점으로 한 상대명)을 돌려줍니다.

반환값:
이 설정 노드의 이름 (그 부모를 기점으로 한 상대명)

absolutePath

public abstract String  absolutePath()
이 설정 노드의 절대 경로명을 돌려줍니다.

반환값:
이 설정 노드의 절대 경로명

isUserNode

public abstract boolean isUserNode()
이 설정 노드가 사용자 설정 트리에 있는 경우는,true 를 돌려줍니다. 시스템 설정 트리에 있는 경우는,false 돌려줍니다.

반환값:
이 설정 노드가 사용자 설정 트리에 있는 경우는 true, 시스템 설정 트리에 있는 경우는 false

toString

public abstract String  toString()
이 설정 노드의 캐릭터 라인 표현을 돌려줍니다. (this.isUserNode() ? "User" :"System") + " Preference Node:" + this.absolutePath() 라고 하는 형식에서 돌려줍니다.

오버라이드(override):
클래스 Object 내의 toString
반환값:
이 객체의 캐릭터 라인 표현

flush

public abstract void flush()
                    throws BackingStoreException 
이 설정 노드와 그 하위 노드의 내용에 대한 모든 변경을, 지속 스토어에 강제적으로 포함합니다. 이 메소드가 정상적으로 복귀했을 경우는, 이 메소드가 불려 가기 전에, 이 노드를 루트로 하는 서브 트리에 모든 변경이 적용되고 있습니다.

이 구현을 사용하면, 임의의 타이밍에 지속 스토어로 변경을 플래시 할 수 있습니다. 이 메소드가 불려 갈 때까지 대기할 필요는 없습니다.

새롭게 작성된 노드로 플래시가 발생하면(자), 그 노드가 지속적이 되어, 아직 지속적으로 되어 있지 않은 상위 노드 ( 및 하위 노드)도 지속적이 됩니다. 다만, 상위 노드에 대한 설정치의 변경은, 지속적이 되지 않습니다.

이 메소드를,removeNode() 메소드를 사용해 삭제된 노드상에서 호출하면(자), flushSpi()가 이 노드상에서 불려 갑니다만, 다른 노드에서는 불려 가지 않습니다.

예외:
BackingStoreException - 배킹 스토어에서 장해가 발생했는지 스토어와의 통신을 실시할 수 없기 위해(때문에), 이 오퍼레이션을 완료할 수 없는 경우
관련 항목:
sync()

sync

public abstract void sync()
                   throws BackingStoreException 
sync 를 호출하면(자), 최초로, VM 로부터 지속 스토어에 포함된 변경이 이 설정 노드와 그 하위 노드에 모두 반영됩니다. 즉, 이 설정 노드와 그 하위 노드의 내용에 대한 변경이 모두 강제적으로 지속 스토어에 포함되어 이 설정 노드상에서 flush 메소드를 호출했을 경우와 같은 효과가 발생합니다.

예외:
BackingStoreException - 배킹 스토어에서 장해가 발생했는지 스토어와의 통신을 실시할 수 없기 위해(때문에), 이 오퍼레이션을 완료할 수 없는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
flush()

addPreferenceChangeListener

public abstract void addPreferenceChangeListener(PreferenceChangeListener  pcl)
지정된 청취자가 이 설정 노드에 대한 「설정 변경 이벤트」를 수신하도록(듯이) 등록합니다. 설정 변경 이벤트는, 설정이 이 노드에 추가되었을 때, 설정이 이 노드로부터 삭제되었을 때, 또는 설정에 관련지을 수 있었던 값이 변경되었을 때에 생성됩니다. 설정 변경 이벤트는,removeNode() 메소드에서는 생성되지 않습니다. 이 메소드에서는, 「노드 변경 이벤트」가 생성됩니다. 설정 변경 이벤트는 clear 메소드에 의해 생성됩니다.

노드 변경 이벤트는, 등록된 청취자와 같은 JVM 내에서 변경을 했을 때에만, 생성됩니다. 다만, 일부의 구현에서는, 현재의 JVM 의 외부에서 행해진 변경에 대해서, 이벤트가 생성되는 일이 있습니다. 이벤트가 생성된 시점에서, 변경이 지속적으로 되어 있지 않은 것이 있습니다. 현재의 노드의 하위 노드로 설정이 변경되었을 때는, 이벤트는 생성되지 않습니다. 그러한 이벤트가 필요한 경우는, 그 노드를 등록할 필요가 있습니다.

파라미터:
pcl - 추가하는 설정 변경 청취자
예외:
NullPointerException - pcl 가 null 의 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
removePreferenceChangeListener(PreferenceChangeListener) , addNodeChangeListener(NodeChangeListener)

removePreferenceChangeListener

public abstract void removePreferenceChangeListener(PreferenceChangeListener  pcl)
지정된 설정 변경 청취자를 삭제해, 설정 변경 이벤트의 수신을 정지합니다.

파라미터:
pcl - 삭제하는 설정 변경 청취자
예외:
IllegalArgumentException - pcl 가 이 노드상에서 등록된 설정 변경 청취자는 아니었던 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
addPreferenceChangeListener(PreferenceChangeListener)

addNodeChangeListener

public abstract void addNodeChangeListener(NodeChangeListener  ncl)
지정된 청취자가 이 노드의 「노드 변경 이벤트」를 수신하도록(듯이) 등록합니다. 노드 변경 이벤트는, 자식(child) 노드가 이 노드에 추가되었을 때, 또는 이 노드로부터 삭제되었을 때에 생성됩니다. 1 회의 removeNode() 호출에 의해, 복수의 「노드 변경 이벤트」가 생성됩니다. 즉, 삭제된 노드를 루트로 하는 서브 트리내의 각 노드에 1 개씩 생성됩니다.

노드 변경 이벤트는, 등록된 청취자와 같은 JVM 내에서 변경을 했을 때에만, 생성됩니다. 다만, 일부의 구현에서는, 현재의 JVM 의 외부에서 행해진 변경에 대해서, 이벤트가 생성되는 일이 있습니다. 이벤트가 생성된 시점에서, 변경이 지속적으로 되어 있지 않은 것이 있습니다. 현재의 노드의 부하에 없는 하위 노드가 추가 또는 삭제되었을 때는, 이벤트는 생성되지 않습니다. 그러한 이벤트가 필요한 경우는, 그 노드를 등록할 필요가 있습니다.

작성된 노드는, 즉시 유효하게 되지 않습니다. 이러한 노드는, 액세스 되었을 때에 암묵적으로 작성됩니다. 이 때문에, 액세스 되기 전에, 자식(child) 노드가 배킹 스토어에 존재할지 어떨지를 구현이 판단할 수 없는 경우가 있습니다 (예를 들어, 배킹 스토어가 도달 불능인 경우나, 캐쉬된 정보가 최신이 아닌 경우 등). 이러한 상황에서의 노드 변경 이벤트의 생성은, 특히 정의되고 있지 않습니다.

파라미터:
ncl - 추가하는 NodeChangeListener
예외:
NullPointerException - ncl 가 null 의 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
removeNodeChangeListener(NodeChangeListener) , addPreferenceChangeListener(PreferenceChangeListener)

removeNodeChangeListener

public abstract void removeNodeChangeListener(NodeChangeListener  ncl)
지정된 NodeChangeListener 를 삭제해, 이벤트의 수신을 정지합니다.

파라미터:
ncl - 삭제하는 NodeChangeListener
예외:
IllegalArgumentException - ncl 가 이 노드상에서 등록된 NodeChangeListener 는 아니었던 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
addNodeChangeListener(NodeChangeListener)

exportNode

public abstract void exportNode(OutputStream  os)
                         throws IOException ,
                                BackingStoreException 
이 노드 (그 하위 노드는 포함하지 않는다)에 포함할 수 있어 모든 설정을 나타내는 XML 문서를, 지정된 출력 스트림에 발행합니다. 이 XML 문서는, 이 노드의 오프 라인 백업으로도 됩니다.

이 XML 문서에서는, 다음의 DOCTYPE 가 선언됩니다.

 <! DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">
 
UTF-8 문자 인코딩이 사용됩니다.

이 메소드는 일반적으로의 규칙과 달리, 이 클래스의 복수의 메소드를 병행해 실행하면(자), 순서대로 실행했을 경우와 같은 결과가 생성됩니다. 이 메소드의 1 회의 호출로 이 노드의 설정이 병행해 변경되었을 경우, export 된 설정이 이 노드에 포함되는 설정과 일치하고 있지 않는 것이 있습니다. 즉, 병행해 행해진 변경은, export 된 데이터에 반영되어 있지 않은 것이 있습니다.

파라미터:
os - XML 문서의 발행처의 출력 스트림
예외:
IOException - 지정된 출력 스트림에의 기입해 때에 IOException 가 발생했을 경우
BackingStoreException - 설정 데이터가 배킹 스토어로부터 읽어낼 수 없는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
importPreferences(InputStream)

exportSubtree

public abstract void exportSubtree(OutputStream  os)
                            throws IOException ,
                                   BackingStoreException 
이 노드와 그 모든 하위 노드에 포함되는 모든 설정을 나타내는 XML 문서를 발행합니다. 이 XML 문서는, 이 노드를 루트로 하는 서브 트리의 오프 라인 백업으로도 됩니다.

이 XML 문서에서는, 다음의 DOCTYPE 가 선언됩니다.

 <! DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">
 
UTF-8 문자 인코딩이 사용됩니다.

이 메소드는 일반적으로의 규칙과 달리, 이 클래스의 복수의 메소드를 병행해 실행하면(자), 순서대로 실행했을 경우와 같은 결과가 생성됩니다. 이 메소드의 1 회의 호출로 이 노드를 루트로 하는 서브 트리의 설정 또는 노드가 병행해 변경되었을 경우, export 된 설정이 서브 트리와 일치하고 있지 않는 것이 있습니다. 즉, 병행해 행해진 변경은, export 된 데이터에 반영되어 있지 않은 것이 있습니다.

파라미터:
os - XML 문서의 발행처의 출력 스트림
예외:
IOException - 지정된 출력 스트림에의 기입해 때에 IOException 가 발생했을 경우
BackingStoreException - 설정 데이터가 배킹 스토어로부터 읽어낼 수 없는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
importPreferences(InputStream) , exportNode(OutputStream)

importPreferences

public static void importPreferences(InputStream  is)
                              throws IOException ,
                                     InvalidPreferencesFormatException 
XML 문서에 의해 나타내지는 모든 설정을, 지정된 입력 스트림로부터 임포트 합니다. 이 문서는, 사용자 설정 또는 시스템 설정을 나타내고 있습니다. 사용자 설정을 나타내고 있는 경우는, 호출한 사용자의 설정 트리로 설정이 임포트 됩니다. 다른 사용자 설정 트리의 문서를 임포트 해도 괜찮습니다. 이 문서에 기술되고 있는 설정의 설정 노드가 존재하지 않는 경우는, 그 노드가 작성됩니다.

XML 문서에는, 다음의 DOCTYPE 선언이 필요합니다.

 <! DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">
 
(이 메소드는,exportNode(OutputStream)exportSubtree(OutputStream) 와 조합해 사용하도록(듯이) 설계되고 있다)

이 메소드는 일반적으로의 규칙과 달리, 이 클래스의 복수의 메소드를 병행해 실행하면(자), 순서대로 실행했을 경우와 같은 결과가 생성됩니다. 이 메소드를 실행하면(자), 이 클래스외의 public 메소드 (node(String) ,put(String, String) 등)를 오버라이드(override) 해 구현했을 경우와 같은 결과가 생성됩니다.

파라미터:
is - XML 문서의 read원의 입력 스트림
예외:
IOException - 지정된 입력 스트림로부터의 읽기시에 IOException 가 발생했을 경우
InvalidPreferencesFormatException - 입력 스트림상의 데이터가, 요구된 문서형을 가지는 유효한 XML 문서가 되지 않는 경우
SecurityException - 시큐리티 매니저가 존재해, 그것이 RuntimePermission("preferences") 를 거부했을 경우
관련 항목:
RuntimePermission

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.