有没有办法写入 JAR 中的文件?

Is there a way to write to a file that is inside a JAR?

我目前正在使用 java class 偏好来维护我们 java 应用程序内部的偏好。它很简单,目前只包含 2 key/value 对。该项目的一些高层要求将 preferences.xml 文件保留在 JAR 中,使其成为一个干净的 运行,因此所有内容都将自包含在 JAR 中(用户不需要能够访问此文件)。

我知道首选项有一个使用 InputStream 的导入和一个使用 OutputStream 的导出。有没有办法使用 outputStream 编辑 jar 中的文件?

我认为无法使用 OutputStream 编辑 jar 中的文件。

你可以做的是: 您可以导入该文件,对其进行编辑并将其添加回 jar 文件。 要将文件推送到 jar,请参阅 adding a file to jar

JAR 文件是一个 zip 文件夹,因此可以使用 java.util.zip 包将其提取和处理。

但是,运行 jar 可能被写保护,防止内容被修改。

更适合将配置存储在操作系统的相应位置。在 windows 上,常见位置是 windows 注册表。

有一个 Java 库用于编辑注册表,如 this answer 所示。

图书馆来源:https://github.com/apache/npanday/tree/trunk/components/dotnet-registry/src/main/java/npanday/registry

要在其他操作系统上存储配置,您可以使用以您的应用程序命名的文件夹中的文件。

  • Linux 上的常用位置:“~/.config”文件夹
  • Mac 上的常用位置:“~/Library/Application 支持”文件夹。