4

问题陈述:
我有一个 jar 文件,其中包含一组配置文件mycompany/configuration/file/
我不知道文件名。
我的目的是在运行时从打包它们的 jar 文件中加载文件名,然后在我的应用程序中使用它。
据我了解:当我使用时,ClassLoader.getResources("mycompany/configuration/file/")我应该将所有配置文件作为 URL 获取。
但是,这就是正在发生的事情:
我得到了一个 URL 对象,其 URL 类似于jar:file:/C:/myJarName.jar!mycompany/configuration/file/
你能否让我知道我做错了什么?

4

1 回答 1

3

对于您正在尝试做的事情,我认为这是不可能的。

getResource并且getResources是关于在类加载器的类路径中查找命名资源,而不是在目录或文件夹下列出值。

因此,例如ClassLoader.getResources("mycompany/configuration/file/Config.cfg")将返回所有名为Config.cfg的文件,这些文件存在于类加载器的类路径中的mycompany/configuration/file路径中(我发现这对于个人加载版本信息特别有用)。

在您的情况下,我认为您可能几乎有一半的解决方案。您返回的 URL 包含源 jar 文件 (jar:file:/C:/myJarName.jar)。您可以使用此信息来破解打开 jar 文件并读取条目列表,过滤名称以“mycompany/configuration/file/”开头的条目。

然后,您可以从那里退回getResource到加载对每个引用的方法(现在您已经有了名称和路径)

于 2012-07-17T05:57:01.130 回答