java - 在 linux 和 macintosh 上查找 "application data"的目录

标签 java linux macos file directory

我有一个基于 LWJGL 的游戏引擎,要运行它,我需要将所需的 native 库放到用户的计算机上。在 Windows 上,我通过以下方式找到应用程序数据目录:

System.getenv("APPDATA");

一切都轻松而完美地工作。我创建一个 File 对象,必要时调用 mkDir,如果文件不在机器上则写入文件。

(注意:创建的目录不应该是一个临时文件,因为我想保存提取的文件以供将来运行。此外,创建这个目录为保存的游戏和其他类似的文件提供了一个简单易用的文件夹数据。)

但是,如果计算机是 Macintosh 或 Linux,我想做类似的事情,但我不太熟悉如何在这两个系统上执行此操作,而且我也不是真正处于良好的测试位置。我目前查找目标目录的方法是这样的:

private static String defaultDirectory()
{
    String OS = System.getProperty("os.name").toUpperCase();
    if (OS.contains("WIN"))
        return System.getenv("APPDATA");
    else if (OS.contains("MAC"))
        return System.getProperty("user.home") + "/Library/Application "
                + "Support";
    else if (OS.contains("NUX"))
        return System.getProperty("user.home");
    return System.getProperty("user.dir");
}

那么,这是正确的方法吗?我正在尝试访问 Mac 上的应用程序支持(我了解到这相当于 Windows 上的 AppData 文件夹)并且我正在尝试在 Linux 上使用类似的文件夹,但我不确定“user. home"找到正确的。

最佳答案

这应该有效。只有一件事:在 Linux 上,最好将设置保存在用户目录中的隐藏文件夹中。因此,对于 Linux,要么将您的文件夹放在 $HOME/.config 下,要么以 . 开头的名称使其隐藏。

关于java - 在 linux 和 macintosh 上查找 "application data"的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6561172/

相关文章:

java - "Simple"表达式语言 - 算术运算符?

java - 如何混合两个图像

linux - golang 使用父进程命名空间在 linux 中读取文件

linux - 更改变量以查找 OpenCV

objective-c - Objective-C 中的 ARC

macos - 在 OS X 中查找已安装应用程序的版本

java - java和多线程中的 super 关键字

java - 无法更新到新的 Android Material 版本

linux - mkdir : cannot create directory `pgsql' : Permission denied

android - .bash_profile 破坏了我的路径,但是 .bashrc