问题陈述:
我有一个包含mycompany/configuration/file/
包中的一组配置文件的jar文件
我不知道文件名。
我的目的是在运行时从打包它们的jar文件中加载文件名,然后在我的应用程序中使用它
据我所知:
当我使用ClassLoader.getResources("mycompany/configuration/file/")
时,我应该将所有配置文件作为URL
然而,这就是发生的事情:
我得到一个网址对象,其网址为jar:file:/C:/myJarName.jar!mycompany/configuration/file/
能不能让我知道我做错了什么?
答案 0 :(得分:2)
对于你想要做的事情,我认为不可能。
getResource
和getResources
是关于在类加载器的类路径中查找命名资源,而不是列出目录或文件夹下的值。
因此,例如ClassLoader.getResources("mycompany/configuration/file/Config.cfg")
将返回类加载器类路径中 mycompany / configuration / file 路径中存在的名为 Config.cfg 的所有文件(我发现这对于个人加载版本信息特别有用)。
在你的情况下,我认为你可能几乎有一半的解决方案。您获取的URL包含源jar文件(jar:file:/ C:/myJarName.jar)。您可以使用此信息来破解打开jar文件,读取条目列表,过滤那些名称以“mycompany / configuration / file /".
开头的条目然后,您可以使用getResource
方法来加载对每个方法的引用(现在您已拥有名称和路径)