可执行 jar 如何将其相关资源文件夹内容复制到本地文件系统,反之亦然

How executable jar copy its relative resources folder contents to local filesystem and vice versa

我使用 Eclipse 创建了一个 javaFX applicationexecutable jar
创建前的项目层次结构 executable jar

       --------Project_Name

               ------------src

                           ---------(default package)
                                    -----------------Main.java

                           ---------data(folder)

                           ---------Resources(folder)
                                    ---------mongod.exe

应用程序流量:

问题

  1. 是否可以将 jar 中的文件夹内容复制到本地文件夹,反之亦然,如果是,那么如何??
  2. 是否可以删除jar中的文件夹内容??
  3. 有没有像getResourceStream(用于获取相关资源文件)的方法可以获取文件夹的真实路径以进行复制???
  4. 或者我应该用Ant Task还是Maven,如果是的话请提供具体内容????
  5. 还有其他策略可以实现吗??

在运行时,没有有效的方法将类路径中的 jar 文件内部视为文件系统并将其复制出来。类路径 API 不会将包视为目录。那么,您可以选择两个方向。

  1. 将这些资源放入一个tar或jar里面,然后使用常用的开源库(commons-compress等)从类路径中读取它们并写入文件系统。
  2. 如果你确定你的 jar 文件将用于一个普通的老式无聊的 URLClassLoader,你可以解析 java.class.path 系统 属性,在那里找到你的 jar 的路径名,打开你自己的输入流到它,然后使用标准 Java 类 读取 Jar 文件以从中读取内容(然后您可以将它们写在您喜欢的地方)。