Setting Program Attributes |
In Java, program attributes are represented by theProperties
class in thejava.util
package. AProperties
object 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
String
s. For example,os.name
is 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.name
property, 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.System
class. For information about system properties, refer to System Properties in the Using System Resources lesson.You can use the
Properties
class to manage attributes specific to your Java programs. You can load key/value pairs into aProperties
object from a stream, save the properties to a stream, and get information about the properties represented by theProperties
object.Setting Up Your
Properties
ObjectOften 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(); . . .Properties
object. This object contains the set of properties to use if values are not explicitly set elsewhere. This code snippet uses theload
method 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
Properties
object,applicationProps
. This object usesdefaultProps
to provide its default values.Then the code snippet loads a set of properties into
applicationProps
from a file namedappProperties
. The properties loaded intoappProperties
can 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 theProperties
to 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
save
method to write properties to a stream:TheFileOutputStream defaultsOut = new FileOutputStream("defaultProperties"); applicationProps.save(defaultsOut, "---No Comment---"); defaultsOut.close();save
method 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 yourProperties
object, you can query it for information about various properties it contains. TheProperties
class 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
Enumeration
containing all of the keys contained in theProperties
object.
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 |