Properties Class in Java
Properties class is associated with Java since JDK 1.0, i.e. it is a legacy class. It is the subclass of Hashtable. It is used to maintain the lists of values in which the keys, as well as values, is of String type.
Property list can contain a second property list as its default and this list is searched only if the property key is not found in the main property list.
Property class is thread-safe, i.e. multiple threads can share a single properties object without any external synchronization. This is not a generic class but some of its methods are generic.
It defines the following instance variable:
Properties defaults | It holds a default property list associated with the Properties object. |
Properties define these constructors:
Properties() | This constructor creates a Properties object with no default values. |
Properties(Properties propDefault) | It generates an empty property list with the specified default value. |
Method of Properties Class
Modifiers | Methods | Description |
String | getProperty(String key) | It returns the value associated with the specified key in the argument. It returns null if the key is neither in the list nor in the default property list. |
String | getProperty(String key, String defaultProperty) | It returns the value associated with the specified key in the argument. defaultProperty is returned if the key is not present in the list as well as in the default property list. |
void | list(PrintStream streamOut) | It sends the property list to the specified output stream linked to the streamOut. |
List(PrintWriter streamOut) | It sends the property list to the specified output stream linked to the streamOut. | |
load(InputStream streamIn throws IOException) | It reads a property list (key and element pairs) from the specified input byte stream linked to streamIn. | |
load(Reader streamIn throws IOException) | It reads a property list from the input stream linked to streamIn. | |
loadFromXML(InputStream streamIn) | It loads all the property list represented by an XML document on the specified input stream. | |
putAll(Map t) | This method copy all of the mapping from the specified map to the hashtable. | |
store(OutputStream streamOut, String description) | It writes the property list of the Properties table to the specified output stream after writing the string specified by the description parameter. | |
store(Writer writer, String comments) | It writes the property list of the Properties table to the specified output stream after writing the string specified as comments | |
storeToXML(OutputStream out, String comment) | The property list is written to the XML document specified in the argument after writing the string specified as a comment. | |
storeToXML(OutputStream out, String comment, String enc) | The property list and the string specified in the argument is written to XML document linked in the argument. | |
Enumeration<?> | propertyNames() | It returns an enumeration of keys that includes those keys found also in the default property list. |
Object | setProperty(String key, String value) | It calls the Hashtable method put, or returns the previous value associated with key or returns null if no associations exist. |
Set<String> | stringPropertyNames() | It returns a set of keys that is unmodifiable, from the property list where key-value pair is the string that includes distinct key in the default property list if an identical key has not already been found from the main property list. |
Collection<Object> | Values() | It returns a collection view of the values contained in the map. |
Object | merge(Object key, Object value, BiFunction remappingFunction) | It associates the specified key with the specified non-null value if the specified key is not already associated with a value or null. |
Example code to illustrate getProperty() method.
import Java.util.*; class GetProperrtyDemo { public static void main(String arg[]) { Properties p = new Properties(); Set sub; String str; p.put("A", "Java"); p.put("B", "Python"); p.put("C", "SQL"); // checking values in table sub = p.keySet(); Iterator itr = sub.iterator(); while(itr.hasNext()) { str = (String)itr.next(); System.out.println("Subject associated with " + str + " is " + p.getProperty(str)); } System.out.println(); // looking for subject that is in list str = p.getProperty("Oracle", "not found"); System.out.println("The Subject " + str); } }
Output:
Subject associated with A is Java Subject associated with C is SQL Subject associated with B is Python The Subject not found
Example code to illustrating list() method.
import Java.util.*; class ListDemo { public static void main(String arg[]) { Properties p = new Properties(); p.put("Ankit", "Java"); p.put("Sumit", "DBMS"); p.put("Akash", "Bash"); p.list(System.out); } }
Output:
-- listing properties -- Ankit=Java Sumit=DBMS Akash=Bash
Exampple code to illustrate propertyNames() method.
import Java.util.*; class PropertyNameDemo { public static void main(String arg[]) { Properties p = new Properties(); String s; p.put("Ankit", "Java"); p.put("Sumit", "DBMS"); p.put("Akash", "Bash"); Enumeration name = p.propertyNames(); // displaying the enumaration of elements System.out.println(name.nextElement()); System.out.println(name.nextElement()); System.out.println(name.nextElement()); } }
Output:
Ankit Sumit Akash
Example code to illustrate setProperty() method.
import Java.util.*; class SetPropDemo { public static void main(String arg[]) { Properties p = new Properties(); p.put("Amar", "Python"); p.put("Akbar", "Java"); p.setProperty("Anthony", "Microservices"); System.out.println(p); } }
Output:
{Anthony=Microservices, Akbar=Java, Amar=Python}
Example to illustrate the load and Store method.
import Java.io.*; import Java.util.*; class StoreLoadDemo { public static void main(String args[]) throws IOException { Properties p = new Properties(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String name, number; FileInputStream fin = null; boolean changed = false; // Try to open Student database. try { fin = new FileInputStream("D:\\StudentData.dat"); } catch(Exception e) { e.printStackTrace(); } /* If student file already exists, load existing students numbers. */ try { if(fin != null) { p.load(fin); fin.close(); } } catch(IOException e) { System.out.println("Error reading file."); } // Let user enter new names and numbers. do { System.out.println("Enter new name" +" ('quit' to stop): "); name = br.readLine(); if(name.equals("quit")) continue; System.out.println("Enter number: "); number = br.readLine(); p.put(name, number); changed = true; } while(!name.equals("quit")); // If Student data has changed, save it. if(changed) { FileOutputStream fout = new FileOutputStream("D:\\StudentData.dat"); p.store(fout, "Student Database"); fout.close(); } // Look up numbers given a name. do { System.out.println("Enter name to find" +" ('quit' to quit): "); name = br.readLine(); if(name.equals("quit")) continue; number = (String) p.get(name); System.out.println(number); } while(!name.equals("quit")); } }
Output:
Enter new name ('quit' to stop): Ankit Enter number: 9013777664 Enter new name ('quit' to stop): Ashish Enter number: 1245799453 Enter new name ('quit' to stop): quit Enter name to find ('quit' to quit): Ankit 9013777664 Enter name to find ('quit' to quit): quit