You've successfully subscribed to Nicholas Workshop
Great! Next, complete checkout for full access to Nicholas Workshop
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.
Success! Your billing info is updated.
Billing info update failed.

Reading Configuration File In Java

Nicholas Wong
Nicholas Wong

In order to make a program more flexible, it is normal to create an external file to store all the setting. For example, resolution setting of a game is saved in “config.ini” or “settings.prop” so that we can easily modify a program without recompile it. Here I would show you how to do it.

First, we create a config file (you can name it with any name you want as Java read its text only).

# comment  
! comment again  
Surname=Backham  
Othername=Peter  

Second, you need to use the Java API properties to read in the config text.

try {  
    properties = new Properties();  
    properties.load(new FileInputStream("config.ini"));  
} catch (Exception e) {  
    System.out.println(e);  
}  

Alternatively, I had created a class for it. You may copy it if you like, just don’t modify it. =]

/*  
 * Code by Nicholas Wong. Copyright reserved.  
 * Usage:  
 * ConfigReader configReader = new ConfigReader("config.ini");  
 * SshConnectorOld.hostname = configReader.getProperty("Surname");  
 */

import java.util.*;  
import java.io.*;

public class ConfigReader {

    private String fileName;  
    private Properties properties;

    public String getProperty(String propName) {  
        return properties.getProperty(propName);  
    }

    public void printPropertyList() {  
        properties.list(System.out);  
    }

    public ConfigReader(String fileName) {  
        this.fileName = fileName;  
        readProperties();  
    }

    private static String getClassPath() {  
        StringBuffer classLocation = new StringBuffer();  
        final String className = SshConnectorOld.class.getName().replace(‘.’, ‘/’) + ".class";  
        final ClassLoader classloader = SshConnectorOld.class.getClassLoader();

        if (classloader == null) {  
            System.out.println("Cannot load the class");  
            return null;  
        } else {  
            String[] classLocationArray = classloader.getResource(className).toString().substring(6).split("/");  
            for (int i = 0; i<classLocationArray.length-2; i++) {  
                classLocation.append(classLocationArray[i] + "/");  
            }  
            return classLocation.toString();  
        }  
    }

    private void readProperties() {  
        try {  
            properties = new Properties();  
            properties.load(new FileInputStream(getClassPath() + fileName));  
            System.out.println("Configuration file is read successfully.");  
        } catch (Exception e) {  
            System.out.println("Configuration file reading failed.");  
            System.out.println(e);  
        }  
    }  
}  
Unsorted

Nicholas Wong

Fullstack software engineer with strong background in computer science and extensive experience in software engineering and architecture. Studied in NYU, worked in Yahoo, Rakuten and Manulife.