你可以在.jar中存储数据吗?

我正在学习java,目前正在尝试开发一个简单的应用程序。 我的问题是你可以在.jar内部的文本文件中存储有关设置等的数据吗? 如果是这样,您将如何在java中访问它? 对不起,如果这是一个非常愚蠢的想法。

 InputStream is = this.getClass().getResourceAsStream("/data/file.txt"); 

您获得的资源需要在类路径上

是的,你可以,这不是一个愚蠢的问题,我们都需要从某个地方开始。

您的问题分为两部分:

  1. 将数据/文本文件添加到.jar – (使用ant来jar it :)将“fileset dir = …”添加到jar目标,其中dir设置为等于具有数据/文本文件的目录。 请参阅如何使用Ant在jar中包含数据文本文件?

  2. 从java代码中访问该数据/文本文件 – 您需要使用ClassLoader和getResourceAsStream。 请参阅使用getResourceAsStream在Tomcat中加载JAR中的文件

另外,请看一下https://github.com/gitjonathan/turbo-sansa ,我有一个工作版本。

你可以在.jar中存储数据吗?

只读数据可以存储在JAR文件中。 如果JAR在类路径上,则可以使用getResourceAsStream(...)读取此类数据,如果不在类路径上,则使用标准JAR文件API类。

但是将可更新数据存储在JAR文件中是有问题的:

  • 在很多情况下,这是不可能的; 例如,因为JAR文件是只读的或者是动态下载的。

  • 在所有其他情况下,它会非常尴尬,因为标准JAR文件API类不支持更新。 (您需要创建一个新的ZIP文件,除了要更新的文件之外,复制旧内容,添加该文件,然后重命名生成的文件。)