我很快就会构建一个针对 Windows、Mac 和 Linux 的应用程序。我想知道应该在哪里保存应用程序数据,例如设置等。

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

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

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

谢谢!

胡安

有帮助吗?

解决方案

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

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

不要硬编码特定路径或仅在用户名上添加前缀和后缀。另外,请尝试遵循平台的任何约定来命名文件。

其他提示

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

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

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

我不是 :)

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

谢谢!

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

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

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

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

但是,如果您想完全支持多个操作系统,则必须为每个操作系统编写一些特定于操作系统的代码,以准确确定需要进行的操作。(Mac OS 为 ~/Library,基于 GNOME 的系统为 ~/.config,Windows 为 %HOME%/Application Data 等)。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top