2012-04-21 29 views
2

我真的不敢相信我在说这个,但是由于将我的程序移植到OSX并习惯了权限,我意识到我计划在Windows上做什么不工作我想要如何。目前,在Windows上,我的程序将它的设置存储在注册表(HKLM)中,并将一些用户可编辑资源存储在程序文件旁边的文件夹中。出于各种原因,我现在已经决定将配置/设置存储在文件中,并且用户将能够在其他文件夹中保存其他资源。Java:在哪里编写配置而不需要管理权限

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

在此先感谢

PS如果没猜错,该程序是用Java编写的,所以我想知道如何编程让你建议以及请的位置。

回答

4

它在* nix兼容的程序中将信息存储在以名称开头的文件夹中的正常实践。在用户喜欢的主目录,

.bash_history 
.bashrc 

你可以使用在OSX同在我看来,创建一个目录,那么

.myapp 

您可以将任意数量的文件与在任何格式该目录。

要获得该文件夹的位置,你可以做

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

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

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

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

+0

对不起,答复缓慢,谢谢你的回答。 'user.home'属性看起来就是我所需要的,我想,为了检测天气,已经为所有用户安装了程序(在Windows上),我会将配置存储在Program Files中或者看起来好像它会需要管理员权限才能写入。在Mac上,我并不那么担心,因为他们的工作方式(在应用程序方面)。 – Andy 2012-04-22 20:00:39

1

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

+0

感谢您的回答 - 这基本上是Kal说的,但是因为他是一个更完整的答案,我会接受他的。 – Andy 2012-04-22 20:02:19

相关问题