我的Java程序如何在.jar文件中存储文件?

我知道.jar文件基本上是归档文件和应用程序.我要问的是如何在程序中存储数据(实际文件而不仅仅是字符串)?我想在我的Java代码中执行此操作.

如果你想知道我正在制作一个游戏的服务器mod,原因就在于此.服务器启动并创建所有级别数据,我想将所有这些文件存储在我的.jar应用程序中.

解决方法:

是的,你可以这样做.

可以使用Class.getResourceAsStream(String)访问类路径上的JAR文件中的非代码资源.应用程序通常会执行此操作,例如,将国际化消息作为资源包嵌入.

要将文件放入JAR文件,只需将其复制到输入目录树中的适当位置,然后再运行jar命令.

跟进

理论上,在某些情况下,您的应用程序可以将文件存储在自己的JAR文件中:

> JAR必须是本地文件系统中的文件;即不是从远程服务器获取的JAR.
>应用程序必须具有对JAR文件及其父目录的写访问权.
>应用程序不必读回它在当前类加载器中写入JAR的文件;即没有退出并重新启动.
> JAR一定不需要签名.

程序将是:

>找到JAR文件并作为ZIP存档阅读器打开.
>创建ZIP存档编写器以编写新版本的JAR文件.
>将应用程序的文件写入编写器.
>将ZIP阅读器中的所有资源写入编写器,不包括旧版本的应用程序文件.
>关闭读者和作者.
>重命名新版本的JAR以替换旧版本.

如果初始JAR被JVM / OS锁定,则最后一步可能不起作用.在这种情况下,您需要在包装器脚本中重命名.

但是,我认为大多数人会同意这是一个不好的想法.只编写常规文件更简单,更健壮.

上一篇:数据库-多表连接查询


下一篇:Django最佳入门教程,python老教授精简的小案例!