Java Notes

Properties

Note: The function of the java.util.Properties class, to save and restore the properties for a program, might be easier to do using java.util.Preferences. See Preferences.

The java.util.Properties class stores and loads key/value pairs from a file, and manages them in memory. This is the class to use to implement persistent variables (values which are saved in a file).

To create and put values in a Properties table

This example creates a new Properties table and assigns a string value to four different keys.

Properties props = new Properties(); 
props.setProperty("recursiveSearch", "true");
props.setProperty("noCopyPattern", "*.$$$");
props.setProperty("maxLevel", "7");
props.setProperty("fileName", "C:\temp\work.html");

To store a Properties table in a file

Use the Properties .store(OutputStream, String) method. It will write the properties to the output stream, with a header line from the String parameter. Assuming you have variables and an OutputStream like:

boolean recursiveSearch;
String noCopyPattern;
int maxLevel;
. . .
try {
  OutputStream propOut = new FileOutputStream(
            new File("props.stat"));
}catch (. . .

To change values from their natural types to String, the usual idiom is to use concatenation of the empty string..

props.setProperty("recursiveSearch", ""+recursiveSearch);
props.setProperty("noCopyPattern"  , noCopyPattern");
props.setProperty("maxLevel"       , ""+maxLevel);

props.store(propOut, "Macro Processor Properties");

To load Properties from a file

Use the Properties .load(InputStream); method.

You will probably want to get each property value and assign it to an internal variable and perhaps show it in the user interface. For example,

boolean recursiveSearch;
String noCopyPattern;
int maxLevel;
. . .
props.load(propsIn);

// Change the properties back into their natural types.
recursiveSearch = Boolean.getBoolean(props.getProperty("recursiveSearch"));
noCopyPattern = props.getProperty("noCopyPattern");
maxLevel = Integer.parseInt(props.getProperty("maxLevel");

To use default properties

  1. Create a Properties table with all of the default key/value pairs. For example,
    Properties defaultProps = new Properties();
    defaultProps.setProperty("sourceFile", "");
    defaultProps.serProperty("enableScrolling", "false");
  2. Use this default table in the constructor for your regular properties table:
    Properties props = new Properties(defaultProps);

Constructor and Method Summary

Properties()
Properties(Properties defaultValues)

Object setProperty(String key, String value)
String getProperty(String key)
String getProperty(String key, String defaultValue)
Enumeration propertyNames()

void   load(InputStream in)
void   store(OutputStream out, String header)

Related Pages