java - 如何创建一个使用文件来保存应用程序信息的 Jar

标签 java intellij-idea jar

我有一个 Java 项目,它创建一个带有表格的 UI,该表格是可编辑的,当您添加条目时,我将其保存到项目文件夹中 src 之外的数据文件夹中的 json 中。我正在使用 Intellij,并且我知道创建一个 JAR 来将其放入 artefacts 中,并且选择数据文件夹作为资源。但是当创建 JAR 时,它找不到文件 data/items.json 这是因为 JARS 无法编辑其中的文件吗?

最佳答案

Jar 文件是只读的,这意味着您无法在 jar 内保存信息。您可以将文件保存在其中并读取它们,但无法编辑它们。

根据您的情况,或多或少有两种选择:

  1. *.json 文件保存在操作系统临时路径或其他可以读写的位置。
  2. 像 zipper 一样处理 - https://stackoverflow.com/a/4056713/8087490 -
    1. 找到 JAR 文件并以 ZIP 存档阅读器的形式打开。
    2. 创建 ZIP 存档编写器来编写新版本的 JAR 文件。
    3. 将应用程序的文件写入写入器。
    4. 将 ZIP 读取器中的所有资源写入写入器,不包括旧版本的应用程序文件。
    5. 关闭读取器和写入器。
    6. 重命名新版本的 JAR 以替换旧版本。

关于java - 如何创建一个使用文件来保存应用程序信息的 Jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44431428/

相关文章:

java - Sonar 重​​命名此方法;父类中有一个 "private"方法同名

java - 数组与字符串相反。必须使用数组

java - 从 Coldfusion 调用时 jar 中的 BigInteger/SecureRandom 非常慢

java - list 与属性文件格式

java - 在 Mac 上运行 .jar 时出错

java - Android api 29 如何在安装时自动在主屏幕上添加应用程序图标?

Java Scanner hasNext 不匹配分号

scala - Intellij 多模块 maven 项目,其中一个子模块中的更新不会传播到 war

scala - 在 Scala 中正确实现 2 类型参数 Functor

intellij-idea - Intellij IDEA 编译所有模块,即使我只要求 1