0

我只是想知道...此代码在 linux 和 mac 以及 windows 中是否有效?

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

我问的原因是因为我知道 Windows 管理 appdata 的方式与 Mac 和 linux 不同。

4

2 回答 2

4

在 Java 中,Windows 和 unix 操作系统在获取应用程序数据目录的方式上是有区别的。至于 C#,您的示例代码所使用的语言(尽管问题被标记为“java”),我不能肯定地说。

过去,我一直在 Windows 上使用 AppData 文件夹,而只是在 unix 系统上使用 unix home。

public static String getAppDataPath() {
    if (System.getProperty("os.name").contains("Windows")) {
        return System.getenv("APPDATA");
    } else {
        return getUnixHome();
    }
}

public static String getUnixHome() {
    String home = System.getProperty("user.home");
    return home != null ? home : "~";
}

另请注意,在 unix 系统上,最好隐藏用户主目录中的 appdata,因此您应该.在 mac 和 linux 上以文件开头。

于 2012-09-20T20:07:56.010 回答
1

“appdata”的概念是特定于 Windows 的概念。虽然 Linux 和 OSX 系统有一些存储数据的约定,但没有人称它们为“appdata”。在 Linux 或 OSX 上,编写名称以“.”开头的文件并不少见。进入主目录。在 OSX 上,还有一个详细的 Apple 特定系统偏好设置。

您可能只是考虑使用 Java Preferences API 而根本不处理“appdata”,除非 JVM 的 Windows 实现决定如何处理它。

于 2012-09-20T20:44:24.027 回答