preferences api
Java

Preferences API

$B%I%-%e%a%s%H$NL\

$B35MW(B

$B%"%W%j%1!<%7%g%s$K$O!"$5$^$6$^$J%f!<%6$*$h$S4D6-MW7o$K1~$8$?@_Dj$*$h$S9=@.%G!<%?$,I,MW$G$9!#(B java.util.prefs $B%Q%C%1!<%8(B$B$r;HMQ$9$l$P!"%f!<%6$*$h$S%7%9%F%`$N@_Dj$*$h$S9=@.%G!<%?$r!"%"%W%j%1!<%7%g%s$+$i3JG<$*$h$S $B@_Dj%G!<%?$rJQ99$9$k$9$Y$F$N%a%=%C%I$O!"HsF14|E*$KA`:n$G$-$^$9!#(B $B3F%a%=%C%I$O$?$@$A$KI|5"$7!"JQ99$O;}B3E*$J%P%C%-%s%0%9%H%"$KE>Aw$5$l$^$9!#(B flush $B%a%=%C%I$r;HMQ$9$l$P!"%P%C%-%s%0%9%H%"$r6/@)E*$K99?7$G$-$^$9!#(B

Preferences $B%/%i%9(B$BFb$N%a%=%C%I$O!"C10l(B JVM $BFb$NJ#?t%9%l%C%I$K$h$C$FF1;~$K8F$S=P$5$l$^$9!#$3$N$H$-!"30ItF14|$r9T$&I,MW$O$"$j$^$;$s!#C`l9g$HF1$87k2L$K$J$j$^$9!#(B $B$3$N%/%i%9$,J#?t$N(B JVM $B$K$h$C$FF1;~$K;HMQ$5$l!"@_Dj%G!<%?$,F1$8%P%C%-%s%0%9%H%"$K3JG<$5$l$?>l9g!"%G!<%?%9%H%"$OGK2u$7$^$;$s$,!"@_Dj%G!<%?$N0l4S@-$OJ]>Z$5$l$^$;$s!#(B

$B>\:Y$K$D$$$F$O!"0J2<$N%j%s%/$+$iA*Br$7$F$/$@$5$$!#(B


Preferences API $B$HB>$N5!9=$H$NHf3S(B

Preferences API $B$rF3F~$9$k0JA0$O!"@_Dj$*$h$S9=@.%G!<%?$r8DJL$K4IM}$9$k$?$a$K!"$3$l$+$i@bL@$9$k(B Properties API $B$^$?$O(B JNDI API $B$r;HMQ$7$F$$$^$7$?!#(B

$B@_Dj$*$h$S9=@.%G!<%?$O!"B?$/$N>l9g!"(Bjava.util.Properties API $B$r;HMQ$7$F%W%m%Q%F%#%U%!%$%k$K%"%/%;%9$7!"$3$N%U%!%$%k$K3JG<$7$F$$$^$7$?!#(B $B$?$@$7!"%G%#%9%/>e$G$N%U%!%$%k$N0LCV$^$?$O%U%!%$%k$NL>A0$K4X$9$kI8=`$OB8:_$7$^$;$s$G$7$?!#(B $B$3$N>l9g!"%f!<%6$N@_Dj%G!<%?$N%P%C%/%"%C%W:n@.$d!"%^%7%s4V$N%G!<%?E>Aw$,:$Fq$K$J$j$^$9!#(B $B%"%W%j%1!<%7%g%s?t$,A}2C$9$k$K$D$l$F!"%U%!%$%kL>$,=EJ#$9$k2DG=@-$,9b$/$J$j$^$9!#(B $B$^$?!"%m!<%+%k%G%#%9%/$,B8:_$7$J$$>l9g!"$^$?$O%G!<%?$r30It%G!<%?%9%H%"(B ($B4k6HA40h$K$o$?$k(B LDAP $B%G%#%l%/%H%j%5!<%S%9$J$I$N(B) $B$KJ]B8$9$k>l9g$K$O!"$3$NJ}K!$O;HMQ$G$-$^$;$s!#(B

$BE,MQNc$O>/$J$/$J$j$^$9$,!"(BJNDI (Java Naming and Directory Interface) API $B$r;HMQ$7$F%G%#%l%/%H%j%5!<%S%9$K%"%/%;%9$7!"$=$3$K3JG<$9$k>l9g$b$"$j$^$7$?!#(B Properties API $B$H0[$J$j!"(BJNDI $B$G$O!"G$0U$N%G!<%?%9%H%"$r;HMQ$G$-$^$9(B ($B%P%C%/%(%s%I$NCfN)@-(B)$B!#(B JNDI $B$O6/NO$J(B API $B$G$9$,!"%5%$%:$,Hf3SE*Bg$-$/!"(B5 $B$D$N%Q%C%1!<%8$H(B 83 $B$N%/%i%9$+$i9=@.$5$l$^$9!#(B JNDI $B$K$O!"%G%#%l%/%H%jL>A06u4VFb$G@_Dj%G!<%?$r3JG<$9$k>l=j!"$^$?$O3JG<$9$kL>A06u4V$K4X$9$k%]%j%7!<$,B8:_$7$^$;$s!#(B

Properties $B$*$h$S(B JNDI $B$K$O!"C1=c$G!"HFMQE*$J!"%P%C%/%(%s%I$NCfN)@-$r;}$D@_Dj4IM}5!G=$O$"$j$^$;$s!#(B Preferences API $B$G$O!"(BProperties API $B$NC1=c$5$H(B JNDI $B$N%P%C%/%(%s%I$NCfN)@-$,F1;~$KA0$N=EJ#$r2sHr$7!"0l4S@-$rJ];}$7!"0BDj@-$r8~>e$9$k$?$a$KI,MW$J%]%j%7!<$,AH$_9~$^$l$F$$$^$9!#$?$@$7!"%P%C%-%s%0%G!<%?%9%H%"$N;HMQ$O?d>)$5$l$F$$$^$;$s!#(B


$B;HMQ>e$NCm0U(B

$B$3$3$G$O!"(BPreferences API $B$N;EMM$r@bL@$9$k$N$G$O$J$/!"(BPreferences API $B$N;HMQNc$r$$$/$D$+<($7$^$9!#(B

$BJq4^%/%i%9$N(B Preferences $B%*%V%8%'%/%H$r $B $B$3$3$G$O!"%$%s%i%$%s$N(B String $B%j%F%i%k$G$O$J$/!"(Bstatic final $B%U%#!<%k%I$,!"%-!(B (NUM_ROWS $B$*$h$S(B NUM_COLS) $B$H$7$F;HMQ$5$l$F$$$^$9!#(B $B$3$N$h$&$K$9$k$H!"%-!$NF~NO%_%9$K$h$k/$7$^$9!#(B

$Bl9g!"$^$?$O%P%C%-%s%0%9%H%"$K%"%/%;%9$G$-$J$$>l9g$KJV$5$l$^$9!#(B

package com.acme.widget;
import  java.util.prefs.*;

public class Gadget {
    // Preference keys for this package
    private static final String NUM_ROWS = "num_rows";
    private static final String NUM_COLS = "num_cols";

    void foo() {
        Preferences prefs = Preferences.userNodeForPackage(this);

        int numRows = prefs.getInt(NUM_ROWS, 40);
        int numCols = prefs.getInt(NUM_COLS, 80);

        ...
    }
}
$B>e$NNc$G$O!"%f!<%6$4$H$N@_DjCM$rl9g$O!"(Bfoo $B$N:G=i$N9T$r Preferences prefs = Preferences.systemNodeForPackage(this);

Static $B%a%=%C%I$N(B Preferences $B%*%V%8%'%/%H$r $BA0$N@a$G$O!"Jq4^%/%i%9$K=jB0$9$k(B Preferences $B%*%V%8%'%/%H$r$rL@<(E*$K;XDj$9$kI,MW$,$"$j$^$9!#(B
    Static String ourNodeName = "/com/acme/widget";

    static void foo() {
        Preferences prefs = Preferences.userRoot().node(ourNodeName);

        ...
    }
$BDL>o$O!"%7%9%F%`@_Dj%*%V%8%'%/%H$r=i4|2=;RFb$G(B 1 $B2s static Preferences prefs = Preferences.systemRoot().node(ourNodeName); $BDL>o$O!"%f!<%6@_Dj%*%V%8%'%/%H$N>l9g$b!"F1$8J}K!$rE,MQ$7$^$9!#$?$@$7!"%3!<%I$r%5!<%PFb$G;HMQ$7!"J#?t$N%f!<%6$,F1;~$K$^$?$O=gHV$Kl9g$O!"$3$NJ}K!$O;HMQ$7$^$;$s!#(B $B$3$N$h$&$J%7%9%F%`$G$O!"(BuserNodeForPackage $B$*$h$S(B userRoot $B$,8F$S=P$7B&$N%/%i%$%"%s%H$KBP$7$FE,@Z$J%N!<%I$rJV$7$^$9!#$D$^$j!"(BuserNodeForPackage $B$^$?$O(B userRoot $B$X$N8F$S=P$7$O!"E,@Z$J%9%l%C%I$+$iE,@Z$J%?%$%_%s%0$K9T$&$3$H$,=EMW$K$J$C$F$-$^$9!#(B $B$3$N$h$&$J%5!<%P4D6-$G%3!<%I$r;HMQ$9$k>l9g$O!";HMQ$9$kD>A0$K%f!<%6@_Dj%*%V%8%'%/%H$r$B!VJq4^%/%i%9$N(B Preferences $B%*%V%8%'%/%H$r$B$r;2>H$7$F$/$@$5$$(I!(B

$BIT2DJ,$J99?7(B

Preferences API $B$K$O!"J#?t$N@_Dj$,IT2DJ,$KJQ99$5$l$k%H%i%s%6%/%7%g%s$K;w$?%G!<%?%Y!<%9$O$"$j$^$;$s!#(B $B$?$@$7!"J#?t$N@_Dj$r99?7$9$k$H$-$O!"(B1 $BC10L$G9T$&I,MW$,$"$j$^$9!#(B $B$?$H$($P!"(Bx $B:BI8$H(B y $B:BI8$r3JG<$7$F!"$=$3$K%&%#%s%I%&$rG[CV$9$k$3$H$rA[Dj$7$^$9!#(B $BIT2DJ,$K99?7$9$k$K$O!"$3$l$i$NCM$rC10l$N@_Dj$K3JG<$7$^$9!#(B $B$5$^$6$^$JJ}K!$G%3!<%G%#%s%0$G$-$^$9$,!"(B $B$3$3$G$O4JC1$JNc$r<($7$^$9!#(B
    int x, y;
    ...
    prefs.put(POSITION, x + "," + y);
$B$3$N$h$&$JJ#9g@_Dj$rFI$_9~$`$H$-$O!"I|9f2=$9$kI,MW$,$"$j$^$9!#(B $B0BDj@-$r3NJ]$9$k$?$a$K!"CM$,GK2u$7$?(B ($B2r@OIT2DG=$J(B) $B>l9g$r9MN8$9$kI,MW$,$"$j$^$9!#(B
    static int X_DEFAULT = 50, Y_DEFAULT = 25;
    void baz() {
        String position = prefs.get(POSITION, X_DEFAULT + "," + Y_DEFAULT);
        int x, y;
        try {
            int i = position.indexOf(',');
            x = Integer.parseInt(coordinates.substring(0, i));
            y = Integer.parseInt(position.substring(i + 1));
        } catch (Exception e) {
            // Value was corrupt, just use defaults
            x = X_DEFAULT;
            y = Y_DEFAULT;
        }
        ...
    }

$B%P%C%-%s%0%9%H%"$N%9%F!<%?%9$rH=CG$9$k(B

$BI8=`$N%"%W%j%1!<%7%g%s%3!<%I$G$O!"%P%C%-%s%0%9%H%"$rMxMQ$G$-$k$+$I$&$+$K4X$9$k>pJs$OI,MW$"$j$^$;$s!#(B $B$[$H$s$I$N>l9g!"%P%C%-%s%0%9%H%"$O>o$KMxMQ$G$-$^$9!#MxMQ$G$-$J$$>l9g$O!"%P%C%-%s%0%9%H%"Fb$N@_DjCM$NBe$o$j$K%G%U%)%k%HCM$r;HMQ$7$F!"l9g$K!"F0:n$rJQ99$9$k(B ($B$^$?$OC1=c$K private static final String BACKING_STORE_AVAIL = "BackingStoreAvail"; private static boolean backingStoreAvailable() { Preferences prefs = Preferences.userRoot().node("temporary>"); try { boolean oldValue = prefs.getBoolean(BACKING_STORE_AVAIL, false); prefs.putBoolean(BACKING_STORE_AVAIL, !oldValue); prefs.flush(); } catch(BackingStoreException e) { return false; } return true; }

Java $B%3%l%/%7%g%s(B API $B$N@_7W$K4X$9$k(B FAQ

$B$3$3$G$O!"(BPreferences API $B$N@_7W$K4X$9$k(B FAQ $B$r$^$H$a$F$"$j$^$9!#(B
  1. Preferences API $B$K$O!"(BProperties API $B$H$I$N$h$&$J4XO"@-$,$"$j$^$9$+!#(B

    Preferences API $B$O!"(BProperties $B%/%i%9$N;HMQIQEY$N9b$$%W%m%Q%F%#$rCV$-49$($kL\E*$G@_7W$5$l$F$*$j!"7ZNL$5$r0];}$7$J$,$i!"$5$^$6$^$JE@$rD{@5$7$F$$$^$9!#(B Properties API $B$r;HMQ$9$k$H$-$O!"3F%W%m%Q%F%#%U%!%$%k$N%Q%9L>$rL@<(E*$K;XDj$9$kI,MW$,$"$j$^$9!#$?$@$7!"%W%m%Q%F%#%U%!%$%k$NI8=`$N>l=j$^$?$OL>A0$N5,Ls$O$"$j$^$;$s!#(B $B%W%m%Q%F%#%U%!%$%k$OG$0U$KJT=8$G$-$^$9$,!"GK2u$7$d$9$$$?$a!"?5=E$KJT=8$9$kI,MW$,$"$j$^$9!#(B Properties API $B$G$O!"J8;zNs0J30$N%G!<%?7?$O;HMQ$G$-$^$;$s!#(B Properteis API $B$N;}B3@-$rJ];}$9$k$K$O!"%U%!%$%k%7%9%F%`$r;HMQ$9$kI,MW$,$"$j$^$9!#(B $B$3$l$i$N$3$H$+$i!"(BProperties API $B$K$O3HD%@-$O$"$j$^$;$s!#(B

  2. Preferences API $B$K$O!"(BJNDI $B$H$I$N$h$&$J4XO"@-$,$"$j$^$9$+!#(B

    Preferences API $B$G$O!"(BJNDI $B$HF1MM$K!";}B3E*$J%-!<(B/$BCM$N%G!<%?$K%"%/%;%9$9$k$H$-$K!"%P%C%/%(%s%I$NCfN)@-$,3NJ]$5$l$^$9!#(B $B$?$@$7!"(BJINDI $B$O6/NO$J=ENL%$%s%?%U%'!<%9$G$9!#(B JNDI $B$O!"6/NO$J5!G=$rI,MW$H$9$k4k6H%"%W%j%1!<%7%g%s$KE,$7$F$$$^$9!#(B Preferences API $B$O!"C1=c$G!"HFMQE*$J!"%P%C%/%(%s%I$NCfN)@-$r;}$D@_Dj4IM}5!G=$H$7$F@_7W$5$l$F$$$^$9!#$"$i$f$k(B Java $B%"%W%j%1!<%7%g%s$NF0:n$r!"%f!<%6$NMWK>$K9g$o$;$F4JC1$KD4@0$G$-$^$9!#$^$?!"%"%W%j%1!<%7%g%s$NuBV$b!"$$$/$D$+$N9`L\$G4IM}$G$-$^$9!#(B

  3. $B$9$Y$F$N(B get $B%a%=%C%I$+$i8F$S=P$7B&$K%G%U%)%k%H$rEO$9I,MW$,$"$k$N$O$J$<$G$9$+!#(B

    $B%"%W%j%1!<%7%g%s$KE,@Z$J%G%U%)%k%HCM$rEO$9$3$H$K$h$C$F!"%j%]%8%H%j$,MxMQ$G$-$J$$>l9g$G$b!"%"%W%j%1!<%7%g%s$O$=$N%G%U%)%k%HCM$G

  4. BackingStoreException $B$r%9%m!<$9$k%a%=%C%I$O!"$I$N$h$&$K$7$F7hDj$5$l$?$N$G$9$+!#(B

    $B$3$NNc30$r%9%m!<$9$k%a%=%C%I$O!"$=$N%;%^%s%F%#%/%9$,%P%C%-%s%0%9%H%"$H$NDL?.$r>o$KI,MW$H$7$F$$$k%a%=%C%I$@$1$G$9!#(B $BDL>o$N%"%W%j%1!<%7%g%s$G$O!"$3$N$h$&$J%a%=%C%I$r8F$S=P$9I,MW$O$"$j$^$;$s!#(B $B%P%C%-%s%0%9%H%"$rMxMQ$G$-$J$$>l9g$G$b!"$3$N$h$&$J%a%=%C%I$r8F$S=P$5$J$$8B$j!"%"%W%j%1!<%7%g%s$r

  5. $BJ#?t$N(B VM $B$K$h$kF1;~%"%/%;%9$r!"$3$N(B API $B$G$h$j6/NO$K%5%]!<%H$7$J$$$N$O$J$<$G$9$+!#(B $BF1MM$K!"J#?t$N@_Dj$N99?7$r7k9g$7$FC10l%H%i%s%6%/%7%g%s$KAH$_9~$_!"$9$Y$F99?7$9$k$+$^$C$?$/99?7$7$J$$%;%^%s%F%#%/%9$rE,MQ$7$J$$$N$O$J$<$G$9$+!#(B

    $B$3$N(B API $B$O!";}B3@-$N$"$k4pK\E*$J%G!<%?5-210h$H$7$F;HMQ$7!"%G!<%?%Y!<%9$NBe$o$j$H$7$F$O;HMQ$7$^$;$s!#(B $B$3$N(B API $B$O!"I8=`$N@_Dj(B/$B9=@.%j%]%8%H%j>e$K

  6. $B$3$N(B API $B$N%-!<$H%N!<%IL>$G$O!"$J$.J8;z$,6hJL$5$l$k$N$G$9$+!#F1MM$N4D6-$GF0:n$9$kB>$N(B API (Win32 Registry$B!"(BLDAP $B$J$I(B) $B$G$O!"6hJL$5$l$F$$$^$;$s!#(B

    Java $B%W%m%0%i%_%s%08@8l$G$O!"BgJ8;z$H>.J8;z$,6hJL$5$l$k(B String $B%-!<$,0lHLE*$G$9!#(B $BFC$K!"(BString $B%-!<$O!"(BProperties $B%/%i%9$K$h$C$FDs6!$5$l$^$9!#$3$N(B API $B$O!"(BProperties $B%/%i%9$rCV$-49$($kL\E*$G@_7W$5$l$F$$$^$9!#(B Properties $B$r;HMQ$9$k$H$-$K!"BgJ8;z$H>.J8;z$r6hJL$9$k$3$H$b$"$j$^$9!#(B $B$?$H$($P!"(BJava $B%Q%C%1!<%8L>$r%-!<$H$7$F;HMQ$9$k$H$-$K!"BgJ8;z$H>.J8;z$r6hJL$9$k$3$H$,$"$j$^$9!#(B $B%-!<$NBgJ8;z$H>.J8;z$r6hJL$9$k$H!"$=$N%-!<$r;HMQ$7$F%P%C%-%s%0%9%H%">e$K(B Preferences $B$r

  7. $B$3$N(B API $B$G(B Java 2 Collections Framework $B$,;HMQ$5$l$J$$$N$O$J$<$G$9$+!#(B

    $B$3$N(B API $B$O!"FCDj$NL\E*$K9g$o$;$F@_7W$*$h$S:GE,2=$5$l$F$$$^$9!#(B $B$3$N(B API $B$G$OHFMQ%G!<%?7?$r;HMQ$G$-$^$;$s(B ( JSR-14 $B$r;2>H(B)$B!#$3$N$?$a!"I8=`E*$J%f!<%6$K$H$C$F$OB?>/;H$$$K$/$$$+$b$7$l$^$;$s!#(B Map API $B$X$N=`5r$,E,MQ$5$l$F$$$k>l9g$G$b!"%3%s%Q%$%k;~$K7?J]>Z$7$^$;$s!#(B $B$^$?!"B>$N(B Map $Bl9g$O!"%"%@%W%?%/%i%9$r

  8. put $B$*$h$S(B remove $B7O$N%a%=%C%I$,8E$$CM$rJV$5$J$$$N$O$J$<$G$9$+!#(B

    put $B$*$h$S(B remove $B7O$N%a%=%C%I$O!"%P%C%-%s%0%9%H%"$,MxMQ$G$-$J$$>l9g$G$b!"l9g$O!"$3$NMW7o$KBP1~$G$-$J$/$J$j$^$9!#(B $B$^$?!"$3$N(B API $B$r0lHLE*$J%P%C%/%(%s%I%G!<%?%9%H%">e$Kl9g$K!"%Q%U%)!<%^%s%9$,Dc2<$9$k$3$H$,$"$j$^$9!#(B

  9. $B$3$N(B API $B$NJ]B8:Q$_%G%U%)%k%H$O$I$s$JL\E*$G;HMQ$7$^$9$+!#$^$?!"$J$

    $BJ]B8:Q$_%G%U%)%k%H$O!"4k6H@_Dj$KI,MW$J5!G=$G$9!#$D$^$j!"4k6HA4BN$N@_Dj$r4IM}$9$k$H$-$N3HD%@-$*$h$SHqMQ8zN($r8~>e$5$;$k$3$H$,$G$-$^$9!#$7$+$7!"C10l%f!<%6$N@_Dj$r%f!<%6<+?H$,4IM}$9$k>l9g$K$O!"2a>j$J5!G=$G$9!#(B

  10. $BG$0U$ND>Ns2=2DG=%*%V%8%'%/%H$NFI$_

    $BD>Ns2=2DG=%*%V%8%'%/%H$O!"2u$l$d$9$$%*%V%8%'%/%H$G$9!#$3$N$h$&$J%W%m%Q%F%#$rFI$_l9g$O!"D>Ns2=2DG=%*%V%8%'%/%H$,@5$7$/$^$?$O$^$C$?$/D>Ns2=I|85$5$l$J$$$3$H$,$"$j$^$9!#(B $BD>Ns2=2DG=%*%V%8%'%/%H$O!"$3$N(B API $B$r;HMQ$7$F3JG<$G$-$^$9!#$?$@$7!"$3$NJ}K!$O?d>)$7$F$$$J$$$&$(!"BP1~$9$k%a%=%C%I$bMQ0U$7$F$$$^$;$s!#(B

  11. Preferences $B$,%$%s%?%U%'!<%9$G$J$/!"Cj>]%/%i%9$J$N$O$J$<$G$9$+!#(B

    $B?7$7$$%a%=%C%I$rDI2C$9$k$H$-$K>eJ}8_49@-$rJ]>Z$9$k$3$H$O!"(BPreferences $B$r!V(Bmixin$B!W$H$7$F;HMQ$G$-$J$/$J$kC;=j(B ($BG$0U$N%/%i%9$r(B Preferences $B%*%V%8%'%/%H$H$7$F5!G=$5$;$k$3$H$,$G$-$J$$(B) $B$r>e2s$k$HH=CG$7$^$7$?!#(B $B$^$?!"(Bstatic $B%a%=%C%IMQ$N%/%i%9$r8DJL$KMQ0U$9$kI,MW$,$J$/$J$j$^$9!#(B $B%$%s%?%U%'!<%9$K$O!"(Bstatic $B%a%=%C%I$rAH$_9~$`$3$H$O$G$-$^$;$s!#(B


Copyright © 2002 Sun Microsystems, Inc. All Rights Reserved.

Sun
Java $B%=%U%H%&%'%"(B