【问题标题】:Does this method of appdata work with linux also? [closed]这种 appdata 方法也适用于 linux 吗? [关闭]
【发布时间】:2012-09-13 05:50:44
【问题描述】:

我只是想知道...此代码是否适用于 linux 和 mac 以及 windows?

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

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

【问题讨论】:

  • 该代码似乎没有使用集成 Java API 中的任何内容;那是什么代码?
  • 这是我在快速搜索时发现的获取 appdata 目录的内容。你会使用什么代码?
  • 嗯,这甚至​​不是 Java,所以我会先使用正确的(?)语言。至于你展示的C#代码,我不知道它是否可以跨操作系统工作。在 Java 中,我一直只是简单地使用 unix home 来存储应用程序数据。
  • 好吧,我以为是java代码。如何在 java 中找到 appdata?
  • 请参阅我发布的answer 以在 Java 中查找 appdata。

标签: c# java operating-system


【解决方案1】:

在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 上以 . 开头文件。

【讨论】:

  • 谢谢你的回答,我还以为是java的代码。
  • 别担心,我们都会犯错。如果您选择答案作为最终答案,请不要忘记将答案标记为已接受。
  • 完成!感谢您教我这样做。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2014-01-09
    • 2021-05-18
    • 2014-09-09
    • 2020-11-07
    • 2014-06-14
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 2013-04-23
    相关资源
    最近更新 更多