|
|
Setting Program Attributes |
In Java, program attributes are represented by thePropertiesclass in the
java.utilpackage. APropertiesobject 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 theos.nameproperty, its value isSolaris. 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 Propertiesin 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 aPropertiesobject from a stream, save the properties to a stream, and get information about the properties represented by thePropertiesobject.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 theloadmethod to read the default values from a file on disk nameddefaultProperties. Applications usually save and restore properties to files on the disk.Next, the application uses a different constructor to create a second
Propertiesobject,applicationProps. This object usesdefaultPropsto provide its default values.Then the code snippet loads a set of properties into
applicationPropsfrom a file namedappProperties. The properties loaded intoappPropertiescan 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 thePropertiesto 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 Information
Once you've set up yourPropertiesobject, you can query it for information about various properties it contains. ThePropertiesclass provides several methods for getting property information:
getProperty- 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.
list(notes)
- Writes all the properties to the specified stream. This is useful for debugging.
propertyNames- Returns an
Enumerationcontaining all of the keys contained in thePropertiesobject.
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 Restrictionsfor information about the security restrictions placed on applets.
|
|
Setting Program Attributes |