2

我真的不敢相信我会这么说,但是自从将我的程序移植到 OSX 并习惯了权限后,我意识到我计划在 Windows 上做的事情不会像我想要的那样工作。目前,在 Windows 上,我的程序将其设置存储在注册表 (HKLM) 中,并将一些用户可编辑的资源存储在程序文件旁边的文件夹中。由于各种原因,我现在决定将配置/设置存储在一个文件中,并且用户将能够在哪个文件夹中保存其他资源。

所以我现在的问题是在哪里存储配置文件。显然它将被更新,但我不想编程必须需要管理员权限才能运行。我想提供一个选项,以便所有用户都可以使用该程序(就像大多数程序一样),这当然需要管理员,所以这会导致第二个查询:我应该在哪里存储配置文件(以及文件夹保留了哪些其他资源)以及如何检测该程序是为所有用户安装还是只为一个用户安装!

提前致谢

PS 如果您没有猜到,该程序是用 Java 编写的,所以我想知道如何以编程方式获取您建议的位置。

4

2 回答 2

4

它在 *nix 兼容程序中的正常做法是将信息存储在以 name 开头的文件夹中。在用户的主目录中,

.bash_history
.bashrc

在我看来,您可以在 OSX 上使用相同的内容并创建一个目录说,

.myapp

您可以在该目录下存储任意数量的任何格式的文件。

要获取文件夹的位置,您可以执行

String homeDir = System.getProperty("user.home");
File myAppDir = new File(homeDir, ".myapp");

这大致是可以为您的应用程序获取自定义配置目录的代码。

请注意,点文件/文件夹有点类似于 Windows 中的隐藏文件夹。默认情况下,您的文件管理器通常不会显示这些文件/文件夹。

要确定是否为所有用户安装了该程序,您可以在某些管理员(根)控制的位置创建配置,例如 /etc(不确定 Mac)用户配置始终可以覆盖默认配置。不过,可能有更好的方法来处理这个问题。

于 2012-04-21T12:10:26.873 回答
1

在 Windows 和 unix 上,用户(通常)都有一个(主)文件夹,它对其具有完全权限。您可以在主文件夹中创建一个目录,并让您的用户配置文件驻留在那里。

于 2012-04-21T12:17:48.283 回答