Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the cross-platform way of obtaining the path to the local application data directory?

What I need is a platform-independent way of obtaining the path to the local application data directory. System.getenv("LOCALAPPDATA") seems to work only with Windows. How do I go about this?

like image 762
missingfaktor Avatar asked Jun 20 '12 06:06

missingfaktor


1 Answers

You could probably say something like (contradict me if I am wrong, or if this a bad approach)

private String workingDirectory; //here, we assign the name of the OS, according to Java, to a variable... private String OS = (System.getProperty("os.name")).toUpperCase(); //to determine what the workingDirectory is. //if it is some version of Windows if (OS.contains("WIN")) {     //it is simply the location of the "AppData" folder     workingDirectory = System.getenv("AppData"); } //Otherwise, we assume Linux or Mac else {     //in either case, we would start in the user's home directory     workingDirectory = System.getProperty("user.home");     //if we are on a Mac, we are not done, we look for "Application Support"     workingDirectory += "/Library/Application Support"; } //we are now free to set the workingDirectory to the subdirectory that is our  //folder. 

Note that, in this code, I am taking full advantage that Java treats '/' the same as '\\' when dealing with directories. Windows uses '\\' as pathSeparator, but it is happy with '/', too. (At least Windows 7 is.) It is also case-insensitive on it's environment variables; we could have just as easily said workingDirectory = System.getenv("APPDATA"); and it would have worked just as well.

like image 171
Mike Warren Avatar answered Oct 02 '22 13:10

Mike Warren