【问题标题】:Create File inside jar folder在jar文件夹中创建文件
【发布时间】:2013-04-17 16:29:25
【问题描述】:

我有一个 jar 文件 abc.jar
它有一些特定的代码可以在同一个 jar 文件的 temp 文件夹中创建一个文件。
喜欢

createFile()

现在我想将 abc.jar 包含到我的其他 Web 项目中。它应该调用这个函数 createFile() 并相应地创建文件。
那么有没有办法在jar文件中创建文件。
我知道 jar 总是被压缩和只读的。
但是仍然有解决方法,对我有很大帮助。
:)

【问题讨论】:

  • 您想为应用程序的用户提供什么应用程序功能?

标签: java jar file-handling


【解决方案1】:

读取abc.jar 中的文件,您可以使用ClassLoader.getResource(),但我不认为 Java 提供了类似的工具来将文件添加到 jar 中(出于安全目的)。

jar 文件只是一个 zip 文件,因此如果您真的需要,可以将其解压缩到一个临时目录,添加文件,然后重新创建包含新文件的 jar。但是,我认为这不会达到您正在寻找的效果 - 您以这种方式添加到 jar 文件中的任何文件对于您的运行代码都将不可用,因为原始 jar(没有添加的文件)已经加载。

【讨论】:

  • jar 文件是 zip 文件,而不是 tar 文件。它的内容具有指定的格式。有关详细信息,请参阅en.wikipedia.org/wiki/JAR_(file_format)。 WAR、EAR 和 Apache AAR 和 MAR 文件也是具有自己的原型格式的 ZIP 文件。
【解决方案2】:

您可以提取完整的 Jar,将文件添加到提取的目录结构中,然后从目录结构中重新创建 jar。

例如,您可以使用ZipInputStreamZipOutputStream 来实现此目标。此外,与ZipFileZipEntry 相关的类也会有所帮助。

据我所知,直接添加文件是不可能的。

【讨论】:

    【解决方案3】:

    看看 TrueVFS:http://truevfs.net/(或其前身 TrueZip https://christian-schlichtherle.bitbucket.io/truezip/)。它提供了对归档文件的虚拟文件系统访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 2013-09-28
      • 2012-05-19
      • 2018-12-02
      相关资源
      最近更新 更多