【问题标题】:Open and edit file in .jar with Java?用Java打开和编辑.jar中的文件?
【发布时间】:2011-06-05 14:50:10
【问题描述】:

您将如何打开 .jar 中的 .xml 文件并对其进行编辑?

我知道你能做到……

InputStream myStream = this.getClass().getResourceAsStream("xmlData.xml");

但是您将如何打开 xmlData.xml、编辑文件并将其保存在 .jar 中?我会发现这很有用,并且不想编辑 .jar 之外的文件...并且应用程序需要一直保持运行!

谢谢!

【问题讨论】:

  • 修改xml文件的应用和xmlData.xml在同一个jar文件吗?
  • 它们是同一个... .jar 里面有 .xml 文件...我正在运行 .jar 文件并希望 .jar 应用程序编辑其中的 .xml它

标签: java xml class jar save


【解决方案1】:

Jar 文件只是具有不同文件后缀和内容命名约定的 .zip 文件。因此,请使用 java.util.zip 下的类来读取和/或写入内容。

不保证(甚至不可能)修改内容会影响正在运行的系统,因为类加载器可能会缓存它认为合适的内容。

因此,了解更多有关您实际尝试通过此实现的目标可能会很好。即时修改 jar 的内容听起来很复杂且容易出错...

【讨论】:

  • 我想将我的所有数据存储在 .jar 文件中的 .xml 文件中......这将是名称电子邮件之类的内容
  • 那么您将数据保存在 .jar 文件中的 xml 文件中?当您必须重新部署您的应用程序时会发生什么?假设您想坚持使用 XML。您应该考虑将 .xml 文件保存在应用程序之外并使用配置(可能通过 .properties 文件或使用 Spring?)来设置该 xml 文件在文件系统上的位置。 .jars 的内容应该单独保留,以确保二进制完整性。
  • 我真的不认为它可以干净地完成。首先,您必须首先解决定位 jar 文件的问题(遍历类加载器树或检查 java 进程启动参数)。之后,您使用 java.util.zip 解压缩文件,编辑并重新打包文件,然后您祈祷类加载器缓存将读取您更新的文件。不应该这样做:)。
  • 我要把它拿出来......这太痛苦了
【解决方案2】:

如果你应用。有一个 GUI,你可以访问一个网站/服务器,JWS 可能是答案。 JWS 应用程序可用的 JNLP API。提供 PersistenceService 等服务。这是一个小demo. of the PersistenceService

这个想法是检查 JWS 持久性存储中的 XML。如果不存在,则将其写入那里,否则使用缓存的版本。如果发生变化,将新版本写入商店。

演示。在关闭时写入存储,并在启动时读取。但是没有理由不能被菜单项、计时器等调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多