16

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

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

C:\Documents and Settings\username\MyApp 对 Vista 和 XP 都适用吗?/home/username/.MyApp 适用于 Linux 和 Mac 吗?

非常感谢任何想法和/或最佳实践链接。

谢谢!

胡安

4

9 回答 9

12

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

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

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

于 2008-09-11T16:17:35.797 回答
5

关于最佳实践,Jeff 发表了一篇关于污染用户空间的文章,您可能会发现它很有用:不要污染用户空间

于 2008-09-11T16:38:41.503 回答
4

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

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

于 2008-09-11T17:34:04.677 回答
2

我不是 :)

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

谢谢!

于 2008-09-11T16:19:04.810 回答
2

在 Windows 中,您需要深入到另一个层次,而不仅仅是用户配置文件。使用应用程序数据文件夹。

于 2008-09-11T16:21:11.763 回答
2

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

于 2008-09-11T16:24:42.927 回答
2

对于 Linux/BSD/Solaris: http ://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html

于 2008-09-11T19:35:16.400 回答
1

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

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

但是,如果您想干净地支持多个操作系统,您将不得不为每个操作系统编写一些特定于操作系统的代码,以准确确定事情需要去哪里。(Mac OS 的 ~/Library,基于 GNOME 的系统的 ~/.config,Windows 的 %HOME%/Application Data 等)。

于 2008-09-11T16:21:47.537 回答
1

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

于 2008-12-14T23:39:02.990 回答