7

我的 Java 应用程序正在“user.home”中保存内容,但在 Windows 上,这似乎不是保存应用程序信息的正确路径(正如一位朋友告诉我的那样)。另一个选项是使用首选项 api,但无法使用首选项 api 设置 hsqldb 位置。另外,我希望所有文件都在同一个文件夹中可用(本地数据库、配置、缓存......)。

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

4

5 回答 5

3

在我的 WinXP Pro SP3 系统上,user.home 指向C:\Documents and settings\<username> 很多应用程序只是将它们的数据存储在那里(而不是这个路径 + 应用程序数据,但其他一些会到那里),创建一个 Unix 风格的目录,即。点 + 应用程序名称(例如:.antexplorer、.sqlworkbench、.squirrel-sql、.SunDownloadManager、.p4qt、.gimp-2.4 等)。

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

于 2008-12-02T09:54:17.887 回答
1

窗口应用程序将数据保存在 user.home 中是不寻常的,但并非“错误”。Windows 应用程序喜欢将其数据分布在各处(注册表中的一些位置,应用程序的安装目录中的位置,Windows 目录中的位置,System32 中的位置,这里和那里的一些位置)。最后,这使得彻底备份或删除导致著名的“Windows rot”(即您必须每隔几个月重新安装)的东西变得不可能。

反正。如果您真的不想使用 user.home(我认为没有理由不这样做),请使用Apache commons-lang 中的此类代码来确定您是否在 Windows 上运行。如果结果为真,弹出一个目录选择对话框,用户可以在其中指定他们想要保存数据的位置。

将此信息保存在 Preferences 中,并在下次启动您的应用程序时使用此路径。这样,用户可以指定他们想要数据的位置,而您只需在首选项中留下一点信息。

于 2008-12-02T08:48:13.200 回答
1

对于应用程序“foo”,我会在 user.home 中创建一个名为“.foo”的目录。对于 Windows,它看起来会有些奇怪,但几乎没有人会查看该目录(无论如何它都充满了不起眼的目录),而在 Linux/Solaris/... 上,它会导致一个隐藏目录,不会弄乱用户的主目录视觉上。

于 2008-12-02T09:00:51.210 回答
1

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

==> 值取决于平台,不要使用任何硬编码路径,始终读取 env。变种。

于 2010-10-26T18:07:39.283 回答
0

问题不是 Windows,而是标准的 java 设置。

长讨论 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4787931>这里

我建议在命令行上的“-D MYLOC=%USERPROFILE%”属性上选择它。

请注意,如果用户进行了桌面登录,您只会获得“USERPROFILE”,如果用户使用 citrix 或类似或通过 ssh 远程登录,则不会设置此设置,此外,公司桌面会混淆此设置并可能设置它到无法使用的东西。

于 2008-12-02T09:15:46.857 回答