在应用程序支持或%appdata%中创建目录。

5

我已经熟悉了如何创建文件并将它们放在“user.home”中。我使用的是Mac电脑,对PC上的文件夹不是很了解,但在我的库中有“应用程序支持”文件夹。是否有一种方法可以将一个目录同时放置在这里和PC的“%appdata%”文件夹中?


什么是PC?你想在MAC上获取“应用程序支持”文件夹吗?还是在Windows上获取“应用程序数据”文件夹? - donnior
他指的是Windows上的“应用数据”文件夹,默认情况下是当前用户的%APPDATA%。但是,在Windows术语中,我从未听说过“应用支持”。顺便说一句,%APPDATA%需要管理员权限才能修改其内容。user.home的等效Windows文件夹是%USERPROFILE%。要使用任何Windows环境变量,只需使用System.getenv(string);。例如:System.getenv("USERPROFILE");System.getProperty("user.home"); - ee.
为什么不直接使用(用户主目录的)子目录作为路径呢?这在OS X、Windows和*nix上都可以工作。 - Andrew Thompson
是的,我指的是 Windows 的应用程序数据,但 Mac 有自己的应用程序支持。所以我想我会先检查用户是否有 "user.home" + "\\Local Settings\\ApplicationData"(PC),如果没有,我会将其放在"user.home" + "/Library/Application Support"(MAC)中。 - Amundeep Singh
@AmundeepSingh,你可以先使用System.getProperty("os.name")来检测你正在使用的操作系统类型(OS)。 - donnior
2个回答

5

在Windows系统中,AppData文件夹的路径是"{user.home}\Local Settings\ApplicationData";

您可以使用以下方法获取该路径:

    String dataFolder = System.getProperty("user.home") + "\\Local Settings\\ApplicationData";

或者使用此方法,但它只适用于Windows,因为环境变量'APPDATA'仅在Windows下可用。

    String dataFolder = System.getenv("APPDATA");  

如果您想了解更多信息,可以查看如何在Java中获取本地应用程序数据文件夹?


请注意,第一种方法与语言相关,并受到此问题的影响(https://dev59.com/fnI95IYBdhLWcg3w1BlN),因此第二种方法应该更加可靠。 - bluenote10

3

以下是我使用的代码,如果您需要可以使用:

public FileManager() {

String FileFolder = System.getenv("APPDATA") + "\\" + "Launcher";

System.out.println("Searching for system");

String os = System.getProperty("os.name").toUpperCase();
if (os.contains("WIN")) {
    FileFolder = System.getenv("APPDATA") + "\\" + "Launcher";
    System.out.println("Found windows");
}
if (os.contains("MAC")) {
    FileFolder = System.getProperty("user.home") + "/Library/Application " + "Support"
            + "Launcher";
    System.out.println("Found mac");
}
if (os.contains("NUX")) {
    FileFolder = System.getProperty("user.dir") + ".Launcher";
    System.out.println("Found linux");
}

System.out.println("Searching for resource folder");
File directory = new File(FileFolder);

if (directory.exists()) {
    System.out.println("Found folder");
}

if (directory.exists() == false) {
    directory.mkdir();
    System.out.println("Could not find folder so created it");
}

仅在 Windows 上进行了测试,能否有人在 Mac/Linux 上测试一下?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接