To call getResourceAsStream in a static method, we use ClassName.class instead of getClass()

1. In non static method

	getClass().getClassLoader().getResourceAsStream("config.properties"))

2. In static method

	ClassName.class.class.getClassLoader().getResourceAsStream("config.properties")) 

1. Non Static Method

.properties file in project classpath.

src/main/resources/config.properties

#config file
json.filepath = /home/tvt/workspace/favtuts/data/

FileHelper.java

package com.favtuts.io.utils;

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

public class FileHelper {

    public static void main(String[] args) {
        FileHelper obj = new FileHelper();
        System.out.println(obj.getFilePathToSave());
    }

    public String getFilePathToSave() {

        Properties prop = new Properties();        
        String result = "";

        try (InputStream inputStream = getClass().getClassLoader()
                                            .getResourceAsStream("config.properties")
        ) {
            prop.load(inputStream);
            result = prop.getProperty("json.filepath");
        } catch (IOException e) {
            e.printStackTrace();
        }

        return result;
    }
    
}

Output

/home/tvt/workspace/favtuts/data/

2. Static Method

If the method getFilePathToSave() is converted into a static method, the getClass() method will be failed, and prompts Cannot make a static reference to the non-static method getClass() from the type Object

To fix this, update getClass() to ClassName.class

FileHelper.java

package com.favtuts.io.utils;

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

public class FileHelper {

    public static void main(String[] args) {

        // Static Method
        System.out.println(getFilePathToSaveStatic());
    }

    public static String getFilePathToSaveStatic() {

        Properties prop = new Properties();        
        String result = "";

        try (InputStream inputStream = FileHelper.class.getClassLoader()
                                            .getResourceAsStream("config.properties")
        ) {
            prop.load(inputStream);
            result = prop.getProperty("json.filepath");
        } catch (IOException e) {
            e.printStackTrace();
        }

        return result;
    }
    
}

Output

/home/tvt/workspace/favtuts/data/

Download Source Code

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

$ cd java-io/utils

References

Leave a Reply

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