应用程序如何使用JAR中的文件进行读写?

我需要将数据存储到.jar文件中的文件中,然后再次读取。

我知道我可以使用Class.getResourceAsStream()方法,但它返回一个InputStream ,我可以读取 。 但我寻找一种写作方式。

我需要将数据存储到.jar文件中的文件中,然后再次读取

不,你不知道。

而是将“默认”文件存储在Jar中。 如果更改,请将更改的文件存储在其他位置。 一个常见的地方是user.home的子目录。 检查文件时,首先检查文件系统上是否存在已更改的文件,如果不存在,请加载默认文件。


请注意,描述目标通常比较好,而不是策略。 “将更改的文件存储在Jar中”是一种策略,而“运行之间保存偏好”可能是目标。

这不是真的支持。 原则上,您可以在jar文件上进行操作,但不能保证新的内容将被正确加载。 让你的构build工具pipe理这个jar文件 – 并select其他的东西来pipe理你的程序本身的持久性存储。 像一个文件。

这是不可能的,你可以安全地更改加载的jar子。 在使用时更改它并不是一个好主意。

如果你想这样做,使用一个纯文件系统目录,并添加/删除文件。 即使这可能不会如你所期望的那样工作。

您可以使用包java.util.jar (或者确实只是java.util.zip )来操作任何jar文件。 由于jar中的文件将被压缩,所以这不是存储数据的最省时的方式。

你可能应该在其他地方使用一个目录(例如System.getProperty("user.home") + "/.myProgram" )或者参见java.util.prefs

Class.getResource()返回一个URL。 理论上,你可以使用这个URL来创build你的InputStreamOutputStream 。 但在大多数情况下,生成的JAR是只读文件(或存档)。 所以当你尝试使用它时,你的应用程序可能会跳闸