你能在.jar中存储数据吗?

时间:2013-05-23 02:20:38

标签: java testing internal

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

3 个答案:

答案 0 :(得分:3)

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

您获得的资源需要位于类路径

答案 1 :(得分:1)

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

您的问题分为两部分:

  1. 将数据/文本文件添加到.jar - (使用ant来jar it :)将“fileset dir = ...”添加到jar目标,其中设置了dir等于具有数据/文本文件的目录。请参阅How can I include data text files in a jar using Ant?

  2. 从java代码中访问该数据/文本文件 - 您需要使用ClassLoader和getResourceAsStream。请参阅Loading files in JAR in Tomcat using getResourceAsStream

  3. 另外,请查看https://github.com/gitjonathan/turbo-sansa,我有一个正在运行的版本。

答案 2 :(得分:0)

  

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

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

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

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

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