MarioDS
MarioDS

Reputation: 13063

Java FileOutputStream: path relative to program folder?

What is the best way to find a path relative to the folder where a java application is "installed"?

I have a class with a static method: public static void saveToFile(String fileName)

When I call it with an absolute path, it works, but what I really want is the relative path to where the application is run from, and a folder.

I have not deployed my application, but right now I want to find a path relative to the (Netbeans) project root, and a folder within called data: ProjectName\data\file.dat. Should I use the File class or make it into a URI or something?

Note that I prefer it to be system-independent and will still work if the application is deployed. Eventually the (relative) pathname will be stored in a properties file.

Sorry if this question is a duplicate, any help is appreciated.

Upvotes: 4

Views: 25118

Answers (5)

Andrew Thompson
Andrew Thompson

Reputation: 168825

What is the best way to find a path relative to the folder where a java application is "installed"?

OS manufacturers have been saying for a long time not to save files in the application directory.

Note that I prefer it to be system-independent and will still work if the application is deployed.

Instead put the File in a sub-directory of user.home. User home is where it should be possible to establish a file object that can be read or written. It is also a place that is reproducible across runs, and platform independent.

Upvotes: 5

tak3shi
tak3shi

Reputation: 2405

To get the absolute path to a file use new File().getCanonicalFile().

new FileOutputStream(new File(".\\target\\dataset.xml").getCanonicalFile())

Upvotes: 0

Craig R
Craig R

Reputation: 21

Here you go:

String path = System.getProperty("user.dir");

Upvotes: 2

j13r
j13r

Reputation: 2671

If you deploying as a jar, its possible to obtain the jar file name and path the current code is working in like this:

new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath());

(from How to get the path of a running JAR file?)

Upvotes: 2

AlexR
AlexR

Reputation: 115368

To find relative path to current working directory say new File(".").

If you want to know absolute path of current working directory you can write new File(".").getAbsolutePath() or File(".").getAbsoluteFile()`.

I hope this answers your question. I am sorry if I did not understand you correctly.

Upvotes: 1

Related Questions