Java:无需管理权限即可在何处编写配置

时间:2012-04-21 11:47:46

标签: java file permissions settings

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

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

提前致谢

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

2 个答案:

答案 0 :(得分:4)

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

.bash_history
.bashrc

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

.myapp

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

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

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

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

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

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

答案 1 :(得分:1)

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