可执行 jar 如何将其相关资源文件夹内容复制到本地文件系统,反之亦然
How executable jar copy its relative resources folder contents to local filesystem and vice versa
我使用 Eclipse
创建了一个 javaFX application
的 executable jar
。
创建前的项目层次结构 executable jar
。
--------Project_Name
------------src
---------(default package)
-----------------Main.java
---------data(folder)
---------Resources(folder)
---------mongod.exe
应用程序流量:
- 当用户双击
executable jar
应用程序时,首先在 C
中的用户 space 中创建名为 mongodb
的文件夹(本地文件系统或系统文件夹或 jar 外部) Windows
的驱动器,然后将 Resources
文件夹内容复制到此 monogdb
目录 e:g C:\mongodb
.
其次检查 jar
中的 data
文件夹。如果它是空的,则在用户 space(本地文件系统或 jar 外部)e:g C:\db
中的 C
驱动器中创建 db
文件夹。如果它不为空,则在用户 space(本地文件系统或 jar 外部)e:g C:\db
中创建 db
文件夹并复制 data
文件夹(在 jar 文件夹内) ) 内容到 db
(用户 space 或本地文件夹)。并删除 data
文件夹(在 jar 文件夹内)的内容。
应用程序正在 mongodb
数据库中保存文本文件并具有 menu bar
选项名称 Send to USB
点击发送到 Usb 将发送本地文件系统文件夹 db
(即 C
驱动器 e:gC:\db
)内容(内容将是文件)到 jar
.[=57= 内的 data
文件夹]
问题
- 是否可以将
jar
中的文件夹内容复制到本地文件夹,反之亦然,如果是,那么如何??
- 是否可以删除
jar
中的文件夹内容??
- 有没有像
getResourceStream
(用于获取相关资源文件)的方法可以获取文件夹的真实路径以进行复制???
- 或者我应该用
Ant Task
还是Maven
,如果是的话请提供具体内容????
- 还有其他策略可以实现吗??
在运行时,没有有效的方法将类路径中的 jar 文件内部视为文件系统并将其复制出来。类路径 API 不会将包视为目录。那么,您可以选择两个方向。
- 将这些资源放入一个tar或jar里面,然后使用常用的开源库(commons-compress等)从类路径中读取它们并写入文件系统。
- 如果你确定你的 jar 文件将用于一个普通的老式无聊的 URLClassLoader,你可以解析 java.class.path 系统 属性,在那里找到你的 jar 的路径名,打开你自己的输入流到它,然后使用标准 Java 类 读取 Jar 文件以从中读取内容(然后您可以将它们写在您喜欢的地方)。
我使用 Eclipse
创建了一个 javaFX application
的 executable jar
。
创建前的项目层次结构 executable jar
。
--------Project_Name
------------src
---------(default package)
-----------------Main.java
---------data(folder)
---------Resources(folder)
---------mongod.exe
应用程序流量:
- 当用户双击
executable jar
应用程序时,首先在C
中的用户 space 中创建名为mongodb
的文件夹(本地文件系统或系统文件夹或 jar 外部)Windows
的驱动器,然后将Resources
文件夹内容复制到此monogdb
目录 e:gC:\mongodb
. 其次检查
jar
中的data
文件夹。如果它是空的,则在用户 space(本地文件系统或 jar 外部)e:gC:\db
中的C
驱动器中创建db
文件夹。如果它不为空,则在用户 space(本地文件系统或 jar 外部)e:gC:\db
中创建db
文件夹并复制data
文件夹(在 jar 文件夹内) ) 内容到db
(用户 space 或本地文件夹)。并删除data
文件夹(在 jar 文件夹内)的内容。应用程序正在
mongodb
数据库中保存文本文件并具有menu bar
选项名称Send to USB
点击发送到 Usb 将发送本地文件系统文件夹db
(即C
驱动器 e:gC:\db
)内容(内容将是文件)到jar
.[=57= 内的data
文件夹]
问题
- 是否可以将
jar
中的文件夹内容复制到本地文件夹,反之亦然,如果是,那么如何?? - 是否可以删除
jar
中的文件夹内容?? - 有没有像
getResourceStream
(用于获取相关资源文件)的方法可以获取文件夹的真实路径以进行复制??? - 或者我应该用
Ant Task
还是Maven
,如果是的话请提供具体内容???? - 还有其他策略可以实现吗??
在运行时,没有有效的方法将类路径中的 jar 文件内部视为文件系统并将其复制出来。类路径 API 不会将包视为目录。那么,您可以选择两个方向。
- 将这些资源放入一个tar或jar里面,然后使用常用的开源库(commons-compress等)从类路径中读取它们并写入文件系统。
- 如果你确定你的 jar 文件将用于一个普通的老式无聊的 URLClassLoader,你可以解析 java.class.path 系统 属性,在那里找到你的 jar 的路径名,打开你自己的输入流到它,然后使用标准 Java 类 读取 Jar 文件以从中读取内容(然后您可以将它们写在您喜欢的地方)。