获取本地应用数据目录路径的跨平台方式是什么? [英] What is the cross-platform way of obtaining the path to the local application data directory?
问题描述
我需要的是一种独立于平台的获取本地应用程序数据目录路径的方法.System.getenv("LOCALAPPDATA")
似乎只适用于 Windows.我该怎么做?
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?
推荐答案
你可能会这样说(如果我错了,或者这是一个不好的方法,请与我矛盾)
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.
请注意,在此代码中,我充分利用了 Java 在处理目录时将 '/'
视为与 '\'
相同的优势.Windows 使用 '\'
作为路径分隔符,但它也对 '/'
感到满意.(至少 Windows 7 是.)它的环境变量也不区分大小写;我们可以简单地说 workingDirectory = System.getenv("APPDATA");
并且它也能正常工作.
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.
这篇关于获取本地应用数据目录路径的跨平台方式是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!