我的Java应用程序保存的东西,在“的user.home”但在Windows这似乎并没有要保存应用程序信息(如一个朋友告诉我的)正确的路径。另一选择是使用喜好的API,但它不是可以设置使用偏好API HSQLDB的位置。另外,我想所有的文件是在同一文件夹(本地数据库,配置,缓存,...)。

我正在寻找,它利用特定于操作系统的东西护理一些示例代码或框架。

有帮助吗?

解决方案

在我的WinXP SP3专业系统的user.home点C:\Documents and settings\<username> 应用地块只是存储数据有(而不是这条路+应用程序的数据,但其他一些人去到那里),创造了Unix样式,即目录。点+应用程序名称。(实施例:。.antexplorer,.sqlworkbench,.squirrel-SQL,.SunDownloadManager,.p4qt,.gimp-2.4等)

看起来像一个体面,常见的做法...

其他提示

这是不寻常的一个窗口应用程序将数据保存的user.home而不是“错误”。 Windows应用程序爱到处传播他们的数据(在注册表中的一个位,在应用程序中位的安装目录,Windows目录中的一个位,在System32中有点,有点在这里和那里位)。最终,这使得它不可能干净地备份或删除一些东西,导致了著名的“Windows腐”(即你必须每隔几个月重新安装)。

反正。如果你真的不想使用的user.home(我看不出有什么理由不),使用如下代码的这个来自Apache的公共琅来搞清楚,如果你在Windows上运行。如果产生true,则弹出一个目录选择对话框,用户可以指定他们希望保存自己的数据。

保存在预置信息,当你的应用开始使用此路径的下一次。通过这种方式,用户可以指定他们希望自己的数据,你只需要留下一个比特的信息的首选项。

有关的应用程序“foo”的我想创建一个名为“.foo”此时里面的user.home目录。对于Windows它看起来有点奇怪,但几乎没有人曾经看起来在该目录(和它无论如何充满了晦涩的目录)和Linux / Solaris上/ ......这将导致一个隐藏目录,不杂乱用户主目录视觉上。

动态读取(从代码)APPDATA环境变量的值,和你的配置文件存储在%APPDATA%\\.myapp\config

==>值是依赖于平台的,不使用任何硬编码路径,总是读ENV。变种

问题是不Wiindows但标准的Java设置。

长时间的讨论 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4787931>以下

我建议在命令行上的 '-D MYLOC =%USERPROFILE%' 属性拾取这个向上。

请注意,你将只能得到一个“USERPROFILE”如果用户做了桌面登录,这如果登录remotly与Citrix或类似的或通过ssh的用户,也coprporate桌面乱用此设置周围不被设置与可以将其设置为不可用的东西。

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