【问题标题】:Extract a particular folder from a jar and copy it to a desired destination on my system从 jar 中提取特定文件夹并将其复制到我系统上的所需目标
【发布时间】:2011-10-02 21:18:42
【问题描述】:

我需要将资源文件夹从 jar 中提取到系统中的所需位置。我想通过调用同一个 jar 中的类中的函数来实现。

我不想一次复制一个文件。您能建议我一种复制整个文件夹的方法吗?

我最初想将它们压缩成一个 zip,然后将其复制到其他地方,然后解压缩。 这将如何运作?有没有更有效的方法来做到这一点?

提前致谢。

【问题讨论】:

    标签: java resources jar directory extract


    【解决方案1】:

    如果您打算使用 java API 执行此操作,我只知道一种方法:您必须使用 JarInputStream 或 ZipInputStream,遍历 Zip 条目,检测哪些条目属于文件夹并提取它们,即从 zip 读取并写入磁盘。没有其他“神奇”的方式。

    但如果您愿意,您可能可以使用某种更高级别的 API。检查来自雅加达的 VFS:http://commons.apache.org/vfs/

    它提供的 API 可能满足您的需求。

    【讨论】:

      【解决方案2】:

      您可以使用Runtime.exec api 来执行类似以下的操作:

      jar xf <your_jar_file_name> <path_to_directory_to_be_extracted>
      

      这样,您不必创建专门的类来处理Jar文件,您可以专注于解决手头的实际问题。

      注意:这仅限于 JDK,可能不适用于 JRE。

      【讨论】:

      • 或者,使用类路径中的 tools.jar,您可以在不启动外部进程的情况下执行此操作:sun.tools.jar.Main.main("xf", jarfilename, path)
      • 我需要在课堂上执行此操作。资源实际上是 js、css 文件等,我需要将其复制到所需位置以显示我的网页。
      • 是的,您可以从 Java 类执行 jar 命令。 Runtime.exec("whatever command"); - 但更改工作目录几乎是不可能的。您可以将整个内容包装在一个批处理/shell 文件中,然后使用 exec API 从您的 java 应用程序中调用它。使脚本足够通用以接受命令行参数,您可以通过不同风格的exec API 传递它们。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 2017-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多