4

假设我有一个跨平台可运行的应用程序

此应用程序创建然后在外部文件中读取/写入一些数据和首选项

捆绑层次结构如下:

ApplicationFolder/application.jar
ApplicationFolder/database.odb
ApplicationFolder/config.xml

无论是在 Mac、Windows 还是 Linux 上,应用程序都知道一切都在她身边(即:/database.odb 或 /config.xml)


现在出现了 JavaFx 2 提供的自包含应用程序功能

该应用程序嵌入在 Windows 上的 .exe 和 Mac 上的 .app 中,但还不了解 Linux...

作为 Mac 用户,我在 Mac 上对其进行了测试,发现 database.odb 和 config.xml 现在是在用户根路径中创建的

因此,我同意我应该考虑一种跨平台机制来保存/读取我关于操作系统的应用程序偏好

但我不太确定该做什么以及如何去做(也找不到任何谷歌搜索帮助..)


在 Windows 上,.exe 安装在一个文件夹中,所以我想我可以保持相同的行为

在 Mac 上,.app 是一个文件夹,我应该将所有内容保存在里面(如何获取 .app 路径?!)

Java/JavaFx 中没有内置机制吗?


非常感谢您可以给我的任何评论、建议、文档或其他内容

巴迪斯

4

1 回答 1

2

有很多方法可以做到这一点。我在这里列出了其中一些,没有特别的顺序。推荐的方法取决于存储的数据类型。

Java 提供了一些机制(例如属性API 和首选项API)来维护应用程序的首选项。

如果您的应用程序足够复杂,可以从数据库中受益,那么您可能想要使用 Java EE 或 Spring,它们都有自己的配置机制。

对于只读配置,您可以将相关文件捆绑在应用程序 jar 中。

要相对于应用程序 jar 存储定制的应用程序配置文件或客户端应用程序范围的数据库,请在运行时编写所需的文件。请参阅如何获取当前执行的 jar 文件所在的目录?.

对于用户特定的配置,用于System.getProperty("user.home")检索用户的主目录,然后为您的首选项存储创建一个子目录(例如"{$user.dir}/.myapp"),并使用隐藏文件属性使其不会显示在标准文件目录列表中。

如果您的应用程序依赖于互联网连接,那么您可以在服务器端而不是客户端存储这些信息,并使用互联网协议从客户端使用它。这种方法的一个优点是用户配置和数据可以跨客户端机器自动移植。

于 2013-01-10T19:05:19.157 回答