Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在资源(类路径)文件夹和数据库上。_Java_Scala_Resources - Fatal编程技术网

Java 在资源(类路径)文件夹和数据库上。

Java 在资源(类路径)文件夹和数据库上。,java,scala,resources,Java,Scala,Resources,我想知道是否可以将资源文件夹用作数据库文件夹。我有一个运行小型语义数据库的应用程序。大部分工作都在内存中完成,但有时我需要提交数据库中的数据。它还保存数据,以便程序重新启动时使用。我问这个是因为我觉得有一个不断增长的罐子/包裹听起来很奇怪。实际上,默认情况下,sbt或maven将资源放在jar/包中 有人能告诉我如何正确使用资源文件夹吗。它应该是只读的吗?AFAIK您不能从代码中覆盖.jar中的文件。但您可以在同一位置创建一个文件来保存任何数据,如果文件不存在,则使用默认数据。资源应被视为只读,

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


有人能告诉我如何正确使用资源文件夹吗。它应该是只读的吗?

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

资源应被视为只读,因为整个应用程序可以驻留在.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);

现有的替换程序可能无法使用。

只是好奇一下,如果我尝试这样做,是否会出现错误或其他问题。不是我想要的,但这可能解释了我的代码现在发生的事情: