Properties class

In this article, we will discuss Properties class – one of the Map implemented classes through Java Hashtable class in detail

Properties class is a legacy class to store key-value pairs, where both keys & values are of strictly String data type

 

Properties:

  • Java Properties class is sub-class of Hashtable class (i.e.; Properties extends Hashtable)
  • It is used to store key-value pairs where both key & value is String type
  • This is mainly used to store those kinds of data, which changes periodically or frequently like database connection details, etc.
  • Reason: if we hard-code these things into Java file, then necessary re-compilation and re-package and re-deploy is required (sometime server restart is also required)
  • Using Java Properties, we can overcome this situation by simply changing values in properties file and re-deploying into server
  • Java Properties is used to fetch/read environment variables using getProperties()
  • Present in java.util package and extends java.util.Hashtable class
  • Also, implements java.lang.Cloneable, java.io.Serializable marker interfaces (through super class Java Hashtable class) which provides special ability to Java Properties class (provided by JVM at run time)

Cloneable: to create a duplicate object or to clone an object

Serializable: to transfer objects across network

039-properties-in-java

Source: Team BenchResources.Net

 

Properties constructors:

Properties prop = new Properties();

  • creates an empty Properties object which has no default values

 

Properties prop = new Properties(Properties props);

  • creates an empty Properties object with specified default values

 

Java Properties methods:

Properties specific methods from Java 1.0 version

Java Properties methods Description
String getProperty(String propKey); to read/get value associated with the specified property-key

returns null, if specified key not in the property list

Object setProperty(String propKey, String propValue); used to set key-value pair in properties file

if key is already present, then value is overridden

otherwise, null is returned

Enumeration propertyName(); returns enumeration of keys from property list

or

to get all properties

void load(InputStream is); to load properties from (.properties) file to Java properties object
void store(OutputStream os, String comments); to store/save properties from Java properties object into (.properties) file

 

Properties examples:

Example 1: To store or save to properties file

PropertiesStoreInFile.java

package in.bench.resources.java.collection;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Properties;

public class PropertiesStoreInFile {

	public static void main(String[] args) {

		// creating Properties object to store db credentials
		Properties prop = new Properties();

		// writing db credentials as key-value pairs
		prop.setProperty("db.url", "localhost");
		prop.setProperty("db.port", "1521");
		prop.setProperty("db.name", "xe");
		prop.setProperty("db.username", "tiger");
		prop.setProperty("db.password", "scout");

		try {
			// write and save 
			OutputStream os = new FileOutputStream("db.properties");
			prop.store(os, "Storing DB Credentials");
			System.out.println("Saved to db.properties file");
		} 
		catch (FileNotFoundException fnfex) {
			fnfex.printStackTrace();
		} 
		catch (IOException ioex) {
			ioex.printStackTrace();
		}
	}
}

Output:

#Storing DB Credentials
#Fri Aug 26 17:02:08 IST 2016
db.password=scout
db.name=xe
db.username=tiger
db.port=1521
db.url=localhost

 

Example 2: To read from properties file

PropertiesLoadAndReadFromFile.java

package in.bench.resources.java.collection;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class PropertiesLoadAndReadFromFile {

	public static void main(String[] args) {

		// creating Properties object to load/read db credentials
		Properties prop = new Properties();

		try {
			// reading file as stream
			InputStream is = new FileInputStream("db.properties");

			// load db.properties file
			prop.load(is);

			// printing DB credentials values
			System.out.println("Database URL or host : "
					+ prop.getProperty("db.url"));
			System.out.println("Database port : "
					+ prop.getProperty("db.port"));
			System.out.println("Database name : "
					+ prop.getProperty("db.name"));
			System.out.println("Database username : "
					+ prop.getProperty("db.username"));
			System.out.println("Database password : "
					+ prop.getProperty("db.password"));
		} 
		catch (FileNotFoundException fnfex) {
			fnfex.printStackTrace();
		} 
		catch (IOException ioex) {
			ioex.printStackTrace();
		}
	}
}

Output:

Database URL or host : localhost
Database port : 1521
Database name : xe
Database username : tiger
Database password : scout

 

References:

https://docs.oracle.com/javase/tutorial/collections/intro/
https://docs.oracle.com/javase/tutorial/collections/interfaces/collection.html
https://docs.oracle.com/javase/7/docs/api/java/util/Collection.html
https://docs.oracle.com/javase/7/docs/api/java/util/Map.html
https://docs.oracle.com/javase/7/docs/api/java/util/Map.Entry.html
https://docs.oracle.com/javase/tutorial/collections/interfaces/map.html
http://docs.oracle.com/javase/6/docs/api/java/util/Hashtable.html
https://docs.oracle.com/javase/7/docs/api/java/util/Hashtable.html
https://docs.oracle.com/javase/8/docs/api/java/util/Hashtable.html
https://docs.oracle.com/javase/7/docs/api/java/util/Properties.html
https://docs.oracle.com/javase/tutorial/essential/environment/properties.html
https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html
https://docs.oracle.com/javase/tutorial/javabeans/writing/properties.html

 

Happy Coding !!
Happy Learning !!