This question already has answers here:
How to list the files inside a JAR file?

(16个答案)


5年前关闭。




如何使用ClassLoader.getResources()从我的类路径中找到递归资源?

例如。
  • META-INF“目录”中查找所有资源:
    想像像
    getClass().getClassLoader().getResources("META-INF")
    不幸的是,这仅会检索一个URL恰好到此“目录”。
  • 所有名为bla.xml的资源(递归)
    getClass().getClassLoader().getResources("bla.xml")
    但这将返回一个空的Enumeration

  • 还有一个额外的问题:ClassLoader.getResources()ClassLoader.getResource()有何不同?

    最佳答案

    没有办法递归搜索类路径。您需要知道资源的完整路径名才能以这种方式检索它。该资源可能位于文件系统中的目录中,也可能位于jar文件中,因此它不像执行“类路径”的目录列表那样简单。您将需要提供资源的完整路径,例如'/com/mypath/bla.xml'。

    对于您的第二个问题,getResource将返回与给定资源名称匹配的第一个资源。在the javadoc for getResource.中给出了搜索类路径的顺序

    10-04 12:51