Persistierung von Konfigurationsdaten in Java
Main.java
public final class Main
{ final static java.util.prefs.Preferences alpha
= java.util.prefs.Preferences.userRoot().node
( "/com/example/project/alpha/version/1" );
public static void main( final java.lang.String[] args )
{ alpha.putInt( "gamma", 134644 ); }}Main.java
public final class Main
{ final static java.util.prefs.Preferences alpha
= java.util.prefs.Preferences.userRoot().node
( "/com/example/project/alpha/version/1" );
public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( alpha.getInt( "gamma", 0 ) ); }}Main.java
public final class Main
{ final static java.util.prefs.Preferences alpha
= java.util.prefs.Preferences.userRoot().node
( "/com/example/project/alpha/version/1" ); public static void show()
{ java.lang.System.out.print( alpha.get( "string name", "default value" ) );
java.lang.System.out.println( ", " + alpha.getInt( "int name", 17 ) ); } public static void force()
{ show(); try { alpha.sync(); } /* future reads will show the values put */
catch( final java.util.prefs.BackingStoreException exception )
{ java.lang.System.err.println( exception ); } show(); try { alpha.flush(); } /* forces to store */
catch( final java.util.prefs.BackingStoreException exception )
{ java.lang.System.err.println( exception ); } show(); } public static void main( final java.lang.String[] args )
{ show(); alpha.put( "string name", "text" );
alpha.putInt( "int name", 20 ); force(); try { alpha.removeNode(); }
catch( final java.util.prefs.BackingStoreException exception )
{ java.lang.System.err.println( exception ); } force(); }}transcript
default value, 17
text, 20
text, 20
text, 20
Exception in thread "main" java.lang.IllegalStateException: Node has been removed.
at java.util.prefs.AbstractPreferences.get(AbstractPreferences.java:283)
at Main.show(Main.java:9)
at Main.force(Main.java:13)
at Main.main(Main.java:37)
Große und kleine Buchstaben werden bei den Schlüsseln unterschieden.
Wo und wie die Paare genau gespeichert werden, hängt von der Java-Implementation ab, es ist nicht allgemein festgelegt.
Dies setzt voraus, daß jedes Programm sein eigenes Paket hat.
Die Informationen sind dort nicht besonders geschützt. Andere (Java -)Programme können sie lesen oder verändern.
Verwendung des Pakets als Pfad
final java.util.prefs.Preferences prefs
= Preferences.userNodeForPackage( this.getClass().getName() );
Quellen
http://docs.oracle.com/javase/8/docs/technotes/guides/preferences/index.html http://docs.oracle.com/javase/8/docs/technotes/guides/preferences/overview.html http://docs.oracle.com/javase/8/docs/technotes/guides/preferences/overview.html http://docs.oracle.com/javase/8/docs/api/java/util/prefs/package-summary.html http://docs.oracle.com/javase/8/docs/technotes/guides/preferences/designfaq.html
Übungsaufgaben
Schreiben Sie ein kleines Notizprogramm, mit einem Textfeld, in welchem sich der Benutzer eine Notiz machen kann.
Bei Betätigung der Eingabetaste soll die Notiz dauerhaft so abgespeichert werden, daß sie beim nächsten Programmstart wieder in dem Textfeld erscheint.