|Setting Program Attributes|
In Java, program attributes are represented by the
Propertiesclass in the
Propertiesobject contains a set of key/value pairs. The key/value pairs are like dictionary entries: the key is the word, and the value is the definition.
Both the key and the value are
Strings. For example,
os.nameis the key for one of Java's default system properties--its value contains the name of the current operating system. You use a key to look up a property in the properties list and get its value. On my system, when I look up the
os.nameproperty, its value is
Solaris. Yours will likely be different.
Properties specific to your Java program are maintained by your program. System properties are maintained by the
java.lang.Systemclass. For information about system properties, refer to System Properties in the Using System Resources lesson.
You can use the
Propertiesclass to manage attributes specific to your Java programs. You can load key/value pairs into a
Propertiesobject from a stream, save the properties to a stream, and get information about the properties represented by the
Setting Up Your
PropertiesObjectOften when a program starts up, it will use code similar to the following to set up the properties object:First the application sets up a default. . . // set up default properties Properties defaultProps = new Properties(); FileInputStream defaultStream = new FileInputStream("defaultProperties"); defaultProps.load(defaultStream); defaultsStream.close(); // set up real properties Properties applicationProps = new Properties(defaultProps); FileInputStream appStream = new FileInputStream("appProperties"); applicationProps.load(appStream); appStream.close(); . . .
Propertiesobject. This object contains the set of properties to use if values are not explicitly set elsewhere. This code snippet uses the
loadmethod to read the default values from a file on disk named
defaultProperties. Applications usually save and restore properties to files on the disk.
Next, the application uses a different constructor to create a second
applicationProps. This object uses
defaultPropsto provide its default values.
Then the code snippet loads a set of properties into
applicationPropsfrom a file named
appProperties. The properties loaded into
appPropertiescan be set on a per user basis, a per site basis, or whatever is appropriate for the current program. What's important is that the program saves the
Propertiesto a well-known location so that the next invocation of the program can retrieve them. For example, the HotJava browser saves properties on a per-user basis and saves the properties to a file in the user's home directory.
You use the
savemethod to write properties to a stream:TheFileOutputStream defaultsOut = new FileOutputStream("defaultProperties"); applicationProps.save(defaultsOut, "---No Comment---"); defaultsOut.close();
savemethod needs a stream to write to, and a string which it uses as a comment at the top of the output.
Getting Property InformationOnce you've set up your
Propertiesobject, you can query it for information about various properties it contains. The
Propertiesclass provides several methods for getting property information:
- Returns the value for the specified property. One of the two versions of this method allows you to provide a default value; if the key is not found, the default value is returned.
- Writes all the properties to the specified stream. This is useful for debugging.
- Returns an
Enumerationcontaining all of the keys contained in the
Security Considerations: Access to properties is subject to approval by the current security manager. The example programs contained here are stand-alone applications, which by default have no security manager. If you attempt to use this code in an applet, it might not work depending on the browser or viewer it's running in. See Understanding Applet Capabilities and Restrictions for information about the security restrictions placed on applets.
|Setting Program Attributes|