假设我有一个跨平台可运行的应用程序
这个应用程序在外部文件中创建并读写一些数据和首选项
Bundle层次结构如下:
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上测试了它,看到了这个数据库。Odb和config.xml现在创建在用户根路径
因此,我同意我应该考虑一个跨平台机制来保存/读取我的应用程序关于操作系统的首选项
但是我不太确定该做什么和怎么做(也找不到任何谷歌帮助…)
在windows上,.exe被安装在一个文件夹中,所以我想我可以保持相同的行为
在Mac上,。app是一个文件夹,我应该把所有的东西都放在里面(如何得到。app的路径?!)
在Java/JavaFx中没有内置的机制吗?
非常感谢你给我的任何评论、建议、文档或其他东西
Badisi
有很多方法可以做到这一点。我在这里列出了其中的一些,没有特别的顺序。推荐的方法取决于所存储数据的类型。
Java提供了一些机制(例如属性API和首选项API)来维护应用程序首选项。如果您的应用程序足够复杂,可以从数据库中获益,那么您可能希望使用Java EE或Spring,它们都有自己的配置机制。
对于只读配置,可以将相关文件捆绑在应用程序jar中。
要相对于应用程序jar存储定制的应用程序配置文件或客户端应用程序范围的数据库,请在运行时编写所需的文件。参见如何获取当前正在执行的jar文件所在的目录?
对于特定于用户的配置,使用System.getProperty("user.home")
检索用户的主目录,然后为您的首选存储(例如"{$user.dir}/.myapp"
)创建一个具有隐藏文件属性的子目录,以便它不会显示在标准文件目录列表中。
如果你的应用程序依赖于互联网连接,那么你可以将一些信息存储在服务器端而不是客户端,并使用互联网协议从客户端使用它。这种方法的一个优点是,用户配置和数据可以在客户机之间自动移植。