2016-05-30 57 views
0

我正在构建Java桌面应用程序并需要存储一些数据,所以我决定创建SQLite数据库,但我不知道应该在哪里保存它。我想使用一些跨平台的解决方案,它允许我将它保存在Windows中的AppData \ MyApplicationDirectory中,并在Linux的Home目录中的某个隐藏目录中(我想它应该在那里,对不对?)。有没有办法做到这一点?JavaFX桌面应用程序中的数据存储

+0

你检查出[首选项API(HTTPS:在用户的主目录下创建一个隐藏目录: //docs.oracle.com/javase/7/docs/api/java/util/prefs/Preferences.html)? –

+0

我一直认为它用来存储设置(键值对)而不是数据库文件,但我会检查出来。 – blaballong

+0

我也这么想过。但是,上面的链接页面的一段说明了如下内容:“首选数据分级集合中的一个节点,该类允许应用程序存储和检索用户和系统首选项以及配置数据,该数据永久存储在依赖于实现的支持中典型的实现包括平面文件,特定于操作系统的注册表,目录服务器和SQL数据库,这个类的用户不需要关心后台存储的细节。所以显然它可以用来存储SQL数据库。 –

回答

0

我不认为存在(某些版本的)Windows上存在的AppData目录的跨平台等价物。

我通常在类似情况下要做的就是为你描述的Linux(和类似):

String userHome = System.getProperty("user.home"); 
Path applicationDir = Paths.get(userHome, ".myApplication"); 
Files.createDirectories(applicationDir); 
Path databaseFile = applicationDir.resolve("database.sqlite"); 
// etc... 
+0

如何删除这样的文件?我的意思是当用户卸载软件时,我希望该存储应该被删除。 – Gem

相关问题