Main Tutorials

Java : getResourceAsStream in static method

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

A .properties file in project classpath.

src/main/resources/config.properties

#config file
json.filepath = /Users/mkyong/Documents/workspace/SnakeCrawler/data/
FileHelper.java

package com.mkyong;

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


/Users/mkyong/Documents/workspace/SnakeCrawler/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.mkyong;

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

public class FileHelper {

    public static void main(String[] args) {

        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


/Users/mkyong/Documents/workspace/SnakeCrawler/data/

References

About Author

author image
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter. If you like my tutorials, consider make a donation to these charities.

Comments

Subscribe
Notify of
14 Comments
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
asu
10 years ago

It’s very usefull.
But please tell me. Why you do not close inputStream?

Jinhui
4 years ago

There’re two “class”s inside “ClassName.class.class.getClassLoader().getResourceAsStream(“config.properties”))” at the beginning of the post. Guess there should only be one, right?

Siva Munnaluri
7 years ago

Can you tell me how to mock this code in the junit

Cuneyt
10 years ago

Hi,

What if i use FileHelper.class.getResourceAsStream(“config.properties”) without using getClassLoader() method. Are there any differencies?

Thanks.

Krishna
8 years ago

Thanks.. It was useful..

pony
10 years ago

Useful. Tnx.

Forhad
11 years ago

This is really cool. It’s just save my time . Specially calling frrom static method.
Exactly what i am looking for.

Sonal C Macwan
2 years ago

how to write junit test for this method getFilePathToSaveStatic to cover exception part?


Denís Navarro Alcaide
8 years ago

thanks! works perfectly with static methods

Harshad Loya
8 years ago

My getResourceAsStream is returning me null value… can you tell why it would be so?

ConSgo
7 years ago
Reply to  Harshad Loya

mine too

TomSkyer
7 years ago
Reply to  ConSgo

Use it without getClassLoader()

oussama
10 years ago

i am using getResourceAsStream to read an image but when i export my runnable jar i can not accessed to it . so i wonder if there is a solution , just a notification it’s work on eclipse .

Hassan Ali
10 years ago

Nice explanation.