假设你有一个带有artifactId动物园的jar1,带有artifactId动物的jar2。两个jar都有一个具有相同路径的资源文件(例如:/animals/animal.txt)。有没有办法从特定的jar读取该文件?使用getResourcesAsStream也会返回第一个jar,但有时我想要第二个jar的animal.txt文件。
答案 0 :(得分:0)
正如@MadProgrammer建议的那样,ClassLoader.getResources()
将返回网址,其类似于jar:file:/C:/dir/animals.jar!/animals/animal.txt
。
所以这种摘录应该能够选择正确的文件:
Enumeration<URL> urls = getClass().getClassLoader().getResources("/animals/animal.txt");
while (urls.hasMoreElements()) {
URL url = urls.nextElement();
if (url.toExternalForm().contains("animals.jar!")) {
System.out.println(url);
url.openStream()...
}
}