在资源(classpath)文件夹和数据库上。

时间:2014-08-15 12:44:36

标签: java scala resources

我想知道将资源文件夹用作数据库文件夹是否可以。我有一个运行小型语义数据库的应用程序。大多数工作都是在内存中完成的,但我不时需要在数据库中提交数据。它还会保存数据,以便重新启动程序。我之所以这样问,因为拥有一个不断增长的Jar / bundle对我来说听起来很奇怪。实际上,默认情况下,sbt或maven将资源放在jar / bundle中。

有人可以告诉我一些关于如何正确使用资源文件夹的信息。它应该只读吗?

2 个答案:

答案 0 :(得分:0)

AFAIK您无法从代码覆盖.jar中的文件。但您可以在同一位置创建一个文件来保存任何数据(如果文件不存在,则使用默认数据)。

答案 1 :(得分:0)

资源应该被认为是只读的,因为整个应用程序可以驻留在.jar中。还缓存了一些资源。

但是,您可以使用数据库作为初始数据库模板的资源。您可以将其复制到用户主目录的子目录中,这也使该应用程序成为多用户/多租户。

InputStream dbIn = SomeClassInJar.class.getResourceAsStream("/data/initial.hdb");
Path dbPath = Paths.get(System.getProperty("user.home"), ".myapp", "db.hdb");
Files.createDirectories(dbPath.getParent()); // .myapp
Files.copy(dbIn, dbPath, StandardCopyAction.REPLACE_EXISTING);

REPLACE_EXISTING可能不会使用。

相关问题