Normally, Java properties file is used to store project configuration data or settings. In this tutorial, we will show you how to read and write to/from a .properties file.

	Properties prop = new Properties();
	
	// set key and value
	prop.setProperty("db.url", "localhost");
	prop.setProperty("db.user", "favtuts");
	prop.setProperty("db.password", "password");
		
	// save a properties file
	prop.store(outputStream, "");

	// load a properties file
	prop.load(inputStream)
	
	// get value by key
	prop.getProperty("db.url");
        prop.getProperty("db.user");
        prop.getProperty("db.password");
			
	// get all keys
	prop.keySet();
	
	// print everything
	prop.forEach((k, v) -> System.out.println("Key : " + k + ", Value : " + v));

A simple Maven project structure for testing.

1. Write to the properties file

Set the property key and value, and save it somewhere.

PropertiesFileExamples.java

package com.favtuts.io.howto;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Paths;
import java.util.Properties;

public class PropertiesFileExamples {    
    public static void main(String[] args) {
        
        String userDirectory = Paths.get("")
            .toAbsolutePath()
            .toString();
        
        // path/to/config.properties
        String configFilePath = userDirectory + "/java-io/src/main/resources/config.properties";
        System.out.println(configFilePath);

        // Write to the properties file
        writePropertiesFile(configFilePath);
    }

    private static void writePropertiesFile(String configFilePath)  {

        try (OutputStream output = new FileOutputStream(configFilePath)) {
            
            Properties prop = new Properties();

            // set the properties value
            prop.setProperty("db.url", "localhost");
            prop.setProperty("db.user", "favtuts");
            prop.setProperty("db.password", "password");

            // save properties to project root folder
            prop.store(output, null);

            System.out.println(prop);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Output

{db.user=favtuts, db.password=password, db.url=localhost}

The path/to/config.properties is created.

path/to/config.properties

#Sat May 14 18:00:34 ICT 2022
db.user=favtuts
db.password=password
db.url=localhost

2. Load a properties file

Load a properties file from the file system and retrieved the property value.

PropertiesFileExamples.java

package com.favtuts.io.howto;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Paths;
import java.util.Properties;

public class PropertiesFileExamples {    
    public static void main(String[] args) {
        
        String userDirectory = Paths.get("")
            .toAbsolutePath()
            .toString();
        
        // path/to/config.properties
        String configFilePath = userDirectory + "/java-io/src/main/resources/config.properties";
        System.out.println(configFilePath);

        // Load a properties file
        loadPropertiesFile(configFilePath);
    }

    private static void loadPropertiesFile(String configFilePath) {
        try (InputStream input = new FileInputStream(configFilePath)) {
            
            Properties prop = new Properties();

            // load a properties file
            prop.load(input);

            // get the property value and print it out
            System.out.println(prop.getProperty("db.url"));
            System.out.println(prop.getProperty("db.user"));
            System.out.println(prop.getProperty("db.password"));

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

Output

localhost
favtuts
password

3. Load a properties file from classpath

Load a properties file config.properties from project classpath, and retrieved the property value.

src/main/resources/config.properties

db.user=favtuts
db.password=password
db.url=localhost

PropertiesFileExamples.java

package com.favtuts.io.howto;

import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Paths;
import java.util.Properties;

public class PropertiesFileExamples {    
    public static void main(String[] args) {
        
        // Load a properties file from classpath
        loadPropertiesFileClassPath("config.properties");
    }

    private static void loadPropertiesFileClassPath(String resourceFileName) {
        try (InputStream input = PropertiesFileExamples.class.getClassLoader().getResourceAsStream(resourceFileName)) {

            Properties prop = new Properties();

            if (input == null) {
                System.out.println("Sorry, unable to find " + resourceFileName);
                return;
            }

            //load a properties file from class path, inside static method
            prop.load(input);

            //get the property value and print it out
            System.out.println(prop.getProperty("db.url"));
            System.out.println(prop.getProperty("db.user"));
            System.out.println(prop.getProperty("db.password"));

        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

Output

db.user=favtuts
db.password=password
db.url=localhost

4. Prints everything from a properties file

Load a properties file config.properties from project classpath, and print out the keys and values.

PropertiesFileExamples.java

package com.favtuts.io.howto;

import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Paths;
import java.util.Properties;
import java.util.Set;

public class PropertiesFileExamples {    
    public static void main(String[] args) {
        
        // Prints everything from a properties file
        PropertiesFileExamples app = new PropertiesFileExamples();
        app.printAll("config.properties");
    }

    private void printAll(String resourceFileName) {

        try (InputStream input = getClass().getClassLoader().getResourceAsStream(resourceFileName)) {

            Properties prop = new Properties();

            if (input == null) {
                System.out.println("Sorry, unable to find " + resourceFileName);
                return;
            }

            prop.load(input);

            // Java 8 , print key and values
            prop.forEach((key, value) -> System.out.println("Key : " + key + ", Value : " + value));

            // Get all keys
            prop.keySet().forEach(x -> System.out.println(x));

            Set<Object> objects = prop.keySet();

            /*Enumeration e = prop.propertyNames();
            while (e.hasMoreElements()) {
                String key = (String) e.nextElement();
                String value = prop.getProperty(key);
                System.out.println("Key : " + key + ", Value : " + value);
            }*/

        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

Output

Key : db.user, Value : favtuts
Key : db.password, Value : password
Key : db.url, Value : localhost
db.user
db.password
db.url

Download Source Code

$ git clone https://github.com/favtuts/java-core-tutorials-examples

$ cd java-io/howto

References

Leave a Reply

Your email address will not be published. Required fields are marked *