Transcript Preferences
Preferences
Persistent storage
Information is persistent if it is kept between one
invocation of a program and the next
Many programs keep user preferences in a persistent
fashion
To keep persistent information,
Sometimes the user sets these explicitly (in, say, a dialog box)
Sometimes these are implicit settings, such as window size
and position
Write it to a file whenever it is changed (or when the program
quits), and
Read it in again whenever the program starts up
Java makes this very easy to do
2
Types of preferences
Java distinguishes user preferences, for a particular
user, and system preferences, for everybody
Each “program” may have its own preferences file
Java saves and restores preferences for a particular class
Preferences are kept in a hierarchical tree structure
We will consider only the simplest version, in which
preference settings act like a hash table
3
Constructing a Preferences object
import java.util.prefs.*;
public class MyProgram { ... }
private Preferences userPrefs;
private Preferences systemPrefs;
userPrefs =
Preferences.userNodeForPackage(MyProgram.class);
systemPrefs =
Preferences.systemNodeForPackage(MyProgram.class);
Note that MyProgram.class returns the Class of MyProgram
4
Getting preference values
All getter methods must supply a default value, in case the
preferences files does not exist or cannot be read
String get(String key, String default)
boolean getBoolean(String key, boolean default)
byte[] getByteArray(String key, byte[] default)
double getDouble(String key, double default)
float getFloat(String key, float default)
int getInt(String key, int default)
long getLong(String key, long default)
String[] keys()
5
Setting preference values
void
void
void
void
void
void
void
put(String key, String value)
putBoolean(String key, boolean value)
putByteArray(String key, byte[] value)
putDouble(String key, double value)
putFloat(String key, float value)
putInt(String key, int value)
putLong(String key, long value)
void remove(String key) // remove this preference
void clear()
// remove all preferences
void sync()
// update preferences file now
6
How does this work?
Changes to the Preferences object (via put or putXXX)
happen automatically--all file I/O is done for you
We have treated the preferences file as if it were a flat
file; however, it’s actually a tree structure
You only need sync() if you want to force the file update to
happen immediately rather than eventually
If you want to know more, go to the API
The preferences file is in XML format
Java puts the preferences file in a system-dependent
location on your computer
You can export to/import from a particular file
You can view/edit this XML directly if you like
7
Final comments
As described in these slides, a Preferences object is
simply a hash table that is “magically” kept between
invocations of your program
As such, preferences are really easy to use
Preference files are really intended to be used for small
amounts of persistent data
For large amounts of data, you really should use a
database instead
8
The End
9