在不使用java中的数据库的情况下保留项目的历史记录

时间:2012-04-11 15:31:32

标签: java file-io object-persistence

我有一个小型java实用程序,可以在远程计算机上执行任务。此应用程序将为用户提供下拉/组合框,他们可以在其中输入要连接到的计算机的IP地址或主机名。如果用户可以拥有他们在下拉列表中连接的项目/主机的历史记录,那就太好了。

我认为我可以在可分发jar中创建一个文件并使用它来维护历史记录。但写入jar内的文件似乎是不可能的?替代方法是使用位于jar外部的文本文件,数据库等。但这并不是我想要做的,因为我的实用程序应用程序只有一个文件,我希望它完全独立于任何外部文件。每次运行应用程序时,在jar文件周围粘贴文本文件或创建文本文件也不错。

考虑到这种情况,我可以使用哪些选项?是否有任何api可以帮助存储或保存历史记录?

2 个答案:

答案 0 :(得分:2)

为什么不将此信息与用户主目录中的隐藏文件一起存储?许多应用程序都做同样的事情。

您可以通过这种方式获取用户主目录

String userhome = System.getProperty("user.home");

答案 1 :(得分:1)

我建议保留一些与JAR关联的.dat文件。可以在同一目录中,或在用户的家中(如@ dash1e推荐),以避免任何权限问题。我想你会发现这是最简单的解决方案。

另一种选择是使用基于Java的数据库解决方案,该解决方案可以捆绑到您的JAR中(参见Apache Derby等)。请注意,这会在某处创建文件,但您不必担心文件级管理,因为您只是将其作为数据库进行交互。

最后一个选择,如果你真的坚持要避免维护自己的文件,那就是使用Java Preferences API,它提供了一种操作系统无关的方法,可以在一些混淆的位置将数据存储在系统上。这可能有点滥用这个API的目标,但会完成你所要求的。