4

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

4

3 回答 3

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

The resources you are getting need to be on the classpath

于 2013-05-23T02:34:18.430 回答
1

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

你的问题有两个部分:

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

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

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

于 2013-05-23T03:51:45.773 回答
0

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

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

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

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

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

于 2013-05-23T03:37:36.580 回答