我正在构建一个面向 Windows、Mac 和 Linux 的应用程序。我想知道我应该将应用程序数据(例如设置等)保存在哪里。
应用程序的安装文件夹是最简单的选择,但我认为这可能是新 Vista 安全模型的问题。此外,用户可能需要不同的设置。
C:\Documents and Settings\username\MyApp 对 Vista 和 XP 都适用吗?/home/username/.MyApp 适用于 Linux 和 Mac 吗?
非常感谢任何想法和/或最佳实践链接。
谢谢!
胡安
我正在构建一个面向 Windows、Mac 和 Linux 的应用程序。我想知道我应该将应用程序数据(例如设置等)保存在哪里。
应用程序的安装文件夹是最简单的选择,但我认为这可能是新 Vista 安全模型的问题。此外,用户可能需要不同的设置。
C:\Documents and Settings\username\MyApp 对 Vista 和 XP 都适用吗?/home/username/.MyApp 适用于 Linux 和 Mac 吗?
非常感谢任何想法和/或最佳实践链接。
谢谢!
胡安
每个平台都有自己的 API,用于查找用户的主文件夹、文档文件夹或首选项文件夹。
不要对特定路径进行硬编码,也不要在用户名上添加前缀和后缀。此外,请尝试遵循平台为文件命名的任何约定。
关于最佳实践,Jeff 发表了一篇关于污染用户空间的文章,您可能会发现它很有用:不要污染用户空间
一般来说,我建议您将设置的实现抽象为“设置提供程序”,并为每个平台提供不同的提供程序。这样,您可以以最适合目标平台的方式(例如,Linux 上的文件或 Windows 注册表)实现设置的存储。
不要简单地采用“最小公分母”。如果您有必须明确存储在文件中的内容,请让您的设置提供程序公开这些文件的特定于平台的位置。
我不是 :)
我在 Windows 中使用 USERPROFILE,在 Mac/Linux 中使用 HOME。但即便如此,我需要知道那些地方是正确的。
谢谢!
在 Windows 中,您需要深入到另一个层次,而不仅仅是用户配置文件。使用应用程序数据文件夹。
在 Windows 上我使用 APPDATA,在 Linux 上我使用 HOME。
对于 Linux/BSD/Solaris: http ://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
永远不要将用户数据存储在应用程序文件夹中。这只是个坏主意。
大多数操作系统都有一个 $HOME(或 %HOME%)环境变量。那将是第一个看的地方。
但是,如果您想干净地支持多个操作系统,您将不得不为每个操作系统编写一些特定于操作系统的代码,以准确确定事情需要去哪里。(Mac OS 的 ~/Library,基于 GNOME 的系统的 ~/.config,Windows 的 %HOME%/Application Data 等)。
您打算使用什么语言?例如,Java 有一个专用的Preference API。