跨平台应用程序应该在哪里保留其数据?

时间:2008-09-11 16:15:21

标签: cross-platform

我正在构建一个即将面向Windows,Mac和Linux的应用程序。我想知道应该在哪里保存应用程序数据,例如设置等。

应用程序的安装文件夹是最简单的选择,但我认为这可能是新的Vista安全模型的问题。此外,用户可能需要不同的设置。

C:\ Documents and Settings \ username \ MyApp对Vista和XP都有好处吗? 是/home/username/.MyApp适合Linux和Mac吗?

非常感谢任何有关最佳做法的想法和/或链接。

谢谢!

9 个答案:

答案 0 :(得分:12)

每个平台都有自己的API,用于查找用户的主文件夹或文档文件夹或首选项文件夹。

  • Windows:SHGetFolderPath()或SHGetKnownFolderPath()
  • Mac OS X和iPhone OS:NSSearchPathForDirectoriesInDomains()
  • Unix:$ HOME环境变量

不要对特定路径进行硬编码,也不要在用户名上添加前缀和后缀。此外,尝试遵循平台命名文件的任何约定。

答案 1 :(得分:5)

关于最佳做法,Jeff发布了一篇关于污染用户空间的文章,您可能会发现它很有用:Don't Pollute User Space

答案 2 :(得分:4)

总的来说,我建议将设置的实现抽象为“设置提供商”,并为每个平台提供不同的提供商。这样,您可以以最适合目标平台的方式实现设置的存储(例如,Linux或Windows注册表上的文件)。

不要简单地采用“最低公分母”。如果您的内容必须明确存储在文件中,请让您的设置提供者公开这些文件的平台特定位置。

答案 3 :(得分:2)

我不是:)

我在Windows中使用USERPROFILE,在Mac / Linux中使用HOME。但即使这样,我也需要知道那些是正确的地方。

谢谢!

答案 4 :(得分:2)

在Windows中,您需要更深层次而不仅仅是用户个人资料。使用Application Data文件夹。

答案 5 :(得分:2)

在Windows上我使用APPDATA,在Linux上我使用HOME。

答案 6 :(得分:2)

答案 7 :(得分:1)

永远不要将用户数据存储在应用程序文件夹中。这只是个坏主意。

大多数操作系统都有$ HOME(或%HOME%)环境变量。这将是第一个看的地方。

但是,如果您想要干净地支持多个操作系统,那么您将需要为每个操作系统提供一些特定于操作系统的代码,以确切了解需要采取的措施。 (〜/ Mac OS库,基于GNOME的系统的〜/ .config,%HOME%/ Windows的应用程序数据等)。

答案 8 :(得分:1)

您打算使用哪种语言?例如,Java有一个专用的Preference API