【问题标题】:Open an inputstream for a file inside a jar [duplicate]打开 jar 中文件的输入流 [重复]
【发布时间】:2020-11-09 03:02:41
【问题描述】:

我想访问 jar 中的文件并将其解组。但是我无法像处理文件那样使用路径访问它。最好的方法是什么?

【问题讨论】:

    标签: java


    【解决方案1】:

    我假设您要访问的文件位于资源文件夹中。当您生成一个 jar 时,路径会发生变化,也许这篇文章会对您有所帮助: Access file in jar file?

    【讨论】:

    • 它是一个maven依赖jar。它位于本地 Maven 存储库中。我有路。我想访问该 jar 中的属性文件。我想对工作区中的所有项目执行此操作。例如遍历依赖项并读取每个项目的属性。所以我认为这行不通。
    • @kiri:你试过了吗?它确实有效
    • 就我而言,我正在从外部访问该项目。我不在项目内部。我正在做 Eclipse 插件开发,我正在以 IProject 的身份遍历每个项目并获取它们的 ClassPathEntries。从那里我可以得到它的位置。 (我感兴趣的是maven repo)。我尝试执行以下操作,但没有成功。 for (IClasspathEntry classpathEntry: classPathEntries) { InputStream is = classpathEntry.getClass().getClassLoader().getResourceAsStream("META-INF/Packages.xml");}
    【解决方案2】:

    我认为我们可以做这样的事情。

    JarFile jarFile = new JarFile("the/path/of/jar");
    InputStream inputStream =null;
    ZipEntry file = jarFile.getEntry("file/i/need");
    if(file != null) {
        inputStream = jarFile.getInputStream(file);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 2013-04-22
      • 2014-01-28
      • 2016-06-02
      • 1970-01-01
      • 2011-11-04
      相关资源
      最近更新 更多