de3
de3

Reputation: 2000

Relative path for properties file

I'm using a properties file:

try 
{
    properties.load(new FileInputStream("filename.properties"));
} 
catch (IOException e) 
{
}

Where should I place filename.properties? I don't want to specify absolute path as this code has to work in different platforms. I tried to place it in the same directory as de class but it doesn't work. (Sorry if it's a stupid question)

Maybe I can get the path where the current class is placed somehow?

Upvotes: 5

Views: 26579

Answers (2)

Guillaume
Guillaume

Reputation: 5557

be sure that your property file is available to your compiled (.class) file and get it this way

getClass().getResource("filename.properties") // you get an URL, then openStream it

or

getClass().getResourceAsStream("filename.properties") // you get an InputStream

Example:

import java.net.URL;
public class SampleLoad {
    public static void main(String[] args) {
        final URL resource = SampleLoad.class.getResource("SampleLoad.class");
        System.out.println(resource);
    }
}

this main retrieves its own compiled version at runtime:

file:/C:/_projects/toolbox/target/classes/org/game/toolbox/SampleLoad.class

Upvotes: 4

VirtualTroll
VirtualTroll

Reputation: 3091

You could use : String userDir = System.getProperty("user.dir");

Upvotes: 0

Related Questions